我正在尝试重写我的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]