编辑#2:我禁用了我的 404 页面,默认的未找到页面说它正在寻找一个带有 .php 的 url:
“在此服务器上找不到请求的 URL /events/2012.php”
所以现在我相信它正在寻找一个不存在的实际文件。任何人??
编辑#1:看起来循环重定向是固定的,但我仍然无法弄清楚为什么重写对事件页面不起作用。/events/ 工作得很好,但是 /events/2012/title-id/ 进入 404。 /breweries/ 和 arizona-breweries/brewery-name/ 也可以工作,所以我不确定我错过了什么。
我正在尝试使用我的 events.php 页面添加一个新的目录结构。events/2012/... 我在 breweries.php 下有另一个目录结构,它工作得很好。
当我尝试加载事件 sitename.com/events/2012/title-of-event-3/ 时,它会重定向循环并显示“重定向太多”,并且 URL 如下所示:
sitename.com/events/2012/title-of-event-3.php.php.php.php.php.php.php.php.php.php.php/
我认为 6 小时搜索答案就足够了。任何和所有的帮助表示赞赏!
(不,我的真实 htaccess 文件中没有 sitename.com)
我的 htaccess 文件:
Options +FollowSymLinks -Multiviews
RewriteEngine on
RewriteBase /
#remove php file extension
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteCond %{REQUEST_URI} !^/blog/
RewriteRule ^(.*)/$ $1.php [QSA,L]
#clean urls
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^events/([0-9]+)/(.*)-([0-9]+)/$ events.php?year=$1&title=$2&id=$3 [R,NC,QSA]
RewriteRule ^(.*)-breweries/$ breweries.php?loc=$1 [NC,QSA]
RewriteRule ^(.*)-breweries/(.*)/$ breweries.php?loc=$1&brewery=$2 [NC,QSA,L]
#Force trailing slash after url
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_URI} !example.php
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.sitename.com/$1/ [L,R=301]
#force www
RewriteCond %{HTTP_HOST} !^www.sitename.com$
RewriteRule ^(.*)$ http://www.sitename.com/$1 [R=301,L]