.htaccess 不存在的 url 的无限循环
Posted
技术标签:
【中文标题】.htaccess 不存在的 url 的无限循环【英文标题】:.htaccess infinite loop for non existent urls 【发布时间】:2013-07-19 21:59:51 【问题描述】:我正在处理我的 .htaccess 以获得一个无扩展名的网站。我在网上搜索并实施了一些有效的规则,但是当我输入一个不存在的 url(例如 mysite.com/dsfadfasdf )时,它开始进入无限循环。
如果有人能帮助我摆脱循环并重定向到我选择的页面(我会说该页面不存在),我将非常感激!
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteBase /
# Redirect www to non www
RewriteCond %HTTP_HOST ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
# Home page language
RewriteRule ^(en|ro)/?$ index.php?lang=$1 [L]
# For the profile page
RewriteRule ^(.+)\/accommodation-(.+)\/([0-9]+)\/(.+)$ location.php?id=$3&town=$2&hname=$4&lang=$1 [NC,L]
# Internally rewrite extensionless URL to corresponding .php
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %QUERY_STRING ^(.*)$
RewriteRule ^(.*)$ $1.php?%1 [NC,L,QSA]
# Externally redirect (only) direct client requests for .php URLs to extensionless URLs:
RewriteCond %THE_REQUEST ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(([^/]+/)*[^.]+)\.php http://mysite.com/$1 [R=301,L]
我认为问题出在最后一条规则中。有什么建议吗?
【问题讨论】:
禁用所有规则,并逐个激活以查看它究竟在哪里弄乱了您的网站。我也相信你的问题是# Internally rewrite extensionless URL to corresponding .php
然后***.com/questions/2363520/…
【参考方案1】:
.htaccess
会在 url 改变时继续重写。在您使用 END
标志在内部重写您的 url 后,强制它停止重写:
# Internally rewrite extensionless URL to corresponding .php
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %QUERY_STRING ^(.*)$
RewriteRule ^(.*)$ $1.php?%1 [NC,END,QSA]
Documentation is here.
【讨论】:
以上是关于.htaccess 不存在的 url 的无限循环的主要内容,如果未能解决你的问题,请参考以下文章