我有一个网站http://alburoojschool.org,这是.htaccess文件:
DirectoryIndex home.php index.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule home home.php
RewriteRule ^pages/([^\.]+)$ $1.php
RewriteRule ^news-list/([^\.]+)$ news-list.php?id=$1
RewriteRule ^iq-admin/([^\.]+)$ iq-admin/$1.php
RewriteRule ^news/([0-9]+)/([A-Za-z0-9-]+)/?$ latest-news.php?id=$1&post=$2 [NC,L]
RewriteRule ^events-list/([^\.]+)$ events-list.php?id=$1
RewriteRule ^events/([0-9]+)/([A-Za-z0-9-]+)/?$ upcoming-events.php?id=$1&post=$2 [NC,L]
当我点击http://alburoojschool.org/news-list/1时,它说它是一个重定向循环,但在localhost上工作正常。请帮帮我。
答案 0 :(得分:1)
您需要将此行放在.htaccess:
之上Options -MultiViews
MultiViews
使用选项Apache's content negotiation module
在 mod_rewrite
之前运行,并使Apache服务器匹配文件扩展名。因此/file
可以在网址中,但它会投放/file.php
。
答案 1 :(得分:0)
我可以看到一些潜在的陷阱,但我认为这是你的主要罪魁祸首。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule home home.php
您可能希望确保home
是一个完整的词组并相对于文档根重定向,如下所示:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^home/?$ /home.php
使用你所拥有的内容/news-list/home
之类的网址会点击第一个匹配并尝试重定向到/news-list/home.php
,我假设它不存在,所以它会尝试重定向(再次)到/news-list/home.php
等等。
您应该更新所有重定向,以便它们与docroot相关。