我正在尝试捕获每个URL并将其重写为index.php。我现在在.htaccess中有以下代码:
RewriteEngine on
RewriteRule .* index.php
它会重写每个URL,但我总是得到404说无法找到index.php文件。它正在寻找文件的路径是正确的。我在这里做错了什么?
更新1
当我直接浏览到index.php时,它会正确显示该文件。很奇怪。
更新2
我在httpd.conf中打开了mod_rewrite的日志记录:
RewriteLog /var/log/apache2/rewrite.log
RewriteLevel 3
这是它记录的内容:
strip per-dir prefix: /Users/rits/Sites/test/ ->
applying pattern '.*' to uri ''
rewrite '' -> 'index.php'
add per-dir prefix: index.php -> /Users/rits/Sites/test/index.php
internal redirect with /Users/rits/Sites/test/index.php [INTERNAL REDIRECT]
答案 0 :(得分:1)
我很确定这是因为它试图无限地将index.php
重写为index.php
。
请尝试以下方法:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !index\.php
RewriteRule .* index.php
这应该可以防止重写自己,并希望能解决你的问题。
答案 1 :(得分:0)
试试这个:
RewriteEngine on
RewriteRule ^(.*)$ http://www.yourwebpage.com/$1 [L,R=301]
答案 2 :(得分:0)
这是我设置的一个网站上的.htaccess,我将其设置为将所有内容重定向到索引页面,如果你想尝试的话,它对我有用:
RewriteEngine on
RewriteOptions MaxRedirects=10
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !index\.php
RewriteRule ^.*$ http://www.mywebpage.com/ [R=301,L]
答案 3 :(得分:0)
这是我拥有的.htaccess
文件的内容并且有效:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]