mod rewrite-使用.htacces重写URL时出现404错误



我正在尝试重写我的URL以获得干净的URL。例如,我希望以下URL被这样重写:

www.domain.com/events/events.php

www.domain.com/events/

它正在正确地重写URL,但重写后的URL出现404错误。我做错了什么?

我使用以下规则:

RewriteCond %{THE_REQUEST} ^(GET|POST) /(.*)/(.*).php HTTP
RewriteRule ^ http://www.domain.com/%3/? [R=301,L]

一旦您获得了外部重定向浏览器的规则,您就需要向添加规则,内部重写为实际文件。所以你需要添加:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ /$1/$1.php [L]

现在,这个规则采用一个从/(something)//(something)/(something).php的URI。因此:

  • /foo//foo/foo.php
  • /example//example/example.php

等等。

您在重写的URI中没有提供其他信息来告诉您php文件名是什么,所以如果您有这样的东西:

  • /foo/bar.php

没有办法从CCD_ 10中提取"条"。你需要在干净的url中额外编码:

RewriteCond %{THE_REQUEST} ^(GET|POST) /(.*)/(.*).php HTTP
RewriteRule ^ http://www.domain.com/%2/%3/? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/?$ /$1/$2.php [L]

最新更新