我有简单的.htaccess
:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^(?!/static/).+ [NC]
RewriteCond %{REQUEST_URI} ^(?!/media/).+ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?query=$1 [L]
一切正常(页面/编辑,用户/展示...),但当我在网址index/something
上打开浏览器时,它将变为空$_GET
。
请问哪里有问题?
答案 0 :(得分:1)
您当前的重写规则不考虑/ index / something的情况。如果您只是使用/ something,那么它将被重定向到index.php?query = something。尝试添加此规则:
RewriteRule ^index/(.*)$ index.php?query=$1 [L]
编辑: 基于这些评论,我们看到Apache正在使用/ index作为/index.php的别名。作为临时解决方法,直到您找到Apache配置所需的更改,您可能会这样做:
RewriteRule ^index/(.*)$ index.php?query=index/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?query=$1 [L]
将第一条规则置于RewriteCond线之前将捕获/ index情况,其余部分将被原始规则捕获。
答案 1 :(得分:0)
服务器配置可能存在问题,因为“index”可能是默认文件。因此,由于配置而不是由于htaccess,路由正在完成。
尝试检查Apache将哪些文件名视为有效的默认名称。另外,如果将/index(.*)作为单独的RewriteRule添加会发生什么?