我正在使用.htaccess和php构建一个干净的url系统。 主要思想是将所有内容重写为index.php并将url拆分为由/分隔的段。 它工作,但当我上传到Web服务器时,我得到一个无限循环错误。
我的.htaccess文件是:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
如果我把事情弄清楚了 - 问题在于它将index.php重定向到它自己,但它不应该因为我有处理所有内容的index.php文件和RewriteCond %{REQUEST_FILENAME} !-f
这应该阻止重写。< / p>
请你帮我解决这个问题.htaccess - 我希望它能将所有内容重写为index.php并尽可能便携,所以我可以使用它:
www.mysite.com www.myothersite.com
甚至 www.mysite.com/new /
我还想将像www.mysite.com/articles/2这样的东西重定向到index.php以及www.mysite.com/articles/it/2甚至www.mysite.com/articles/it/search /搜索关键词
答案 0 :(得分:0)
这里的代码来自Drupal的.htaccess,它使用了你想要实现的“干净网址”方法。
# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
在这种情况下,它会将干净的URL附加为“q”查询字符串参数。因此,您的脚本可以根据$_GET['q']
检测要传递的内容。
这是另一种方法,来自Wordpress。
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
这个请求专门查找index.php
的请求,并在进行重定向之前将其过滤掉。