.htaccess 使用.htacces重写URL时出现404错误
我正在尝试重写我的URL,使其具有干净的URL。例如,我希望将以下URL重写为:.htaccess 使用.htacces重写URL时出现404错误,.htaccess,mod-rewrite,url-rewriting,url-rewrite-module,clean-urls,.htaccess,Mod Rewrite,Url Rewriting,Url Rewrite Module,Clean Urls,我正在尝试重写我的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
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)/
的URI转换为/(something)/(something.php
。因此:
到/foo/
/foo/foo.php
到/example/
/example/example.php
/foo/bar.php
/foo/
中提取“条”。您需要在干净的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]
谢谢你的回答。但是我有一个问题..根据我对重写URL的研究,我认为当你重写URL时,它只会影响URL在浏览器中的显示方式,但在后端它仍在访问原始URL。对吗?如果是这样的话,为什么它会给我404?@AngeloRodriguez不,重写发生在服务器端,当你更改显示的URL时,你会重定向浏览器,浏览器会重新请求新的URL。我使用以下规则,但URL www.nightlinx.com/events/miami不会加载页面内容。重写cond%{REQUEST_FILENAME}-f RewriteCond%{REQUEST_FILENAME}-重写规则^events/([^/]+)?$/events/events.php?位置=$1[L]