PHP文件在.htaccess重写规则之后无法访问$\u GET变量
我在我的网站上的URL中有许多带有查询字符串的PHP页面。我正在尝试更改搜索引擎优化的URL,为此我使用了一个.htaccess文件 我是.htaccess的新手,所以这是一个相当基本的问题,我不确定我是否做得对,或者是否有更好的方法来做 我的.htaccess文件:PHP文件在.htaccess重写规则之后无法访问$\u GET变量,php,.htaccess,get,Php,.htaccess,Get,我在我的网站上的URL中有许多带有查询字符串的PHP页面。我正在尝试更改搜索引擎优化的URL,为此我使用了一个.htaccess文件 我是.htaccess的新手,所以这是一个相当基本的问题,我不确定我是否做得对,或者是否有更好的方法来做 我的.htaccess文件: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FIL
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} !/.css$
RewriteCond %{REQUEST_URI} !/.js$
RewriteCond %{REQUEST_URI} !/.png$
RewriteCond %{REQUEST_URI} !/.jpg$
RewriteRule ^category/([0-9a-zA-Z]+) category.php?id=$1
RewriteRule ^product/([0-9a-zA-Z]+) product.php?id=$1
RewriteRule ^page/([0-9a-zA-Z]+) page.php?page_id=$1
这允许我访问category.php?id=1
处的category/1
页面,对于我有重写规则的其他页面也是如此。但是,我的php脚本无法再从URL访问$\u GET变量,因此它正在正确重写,但现在无法显示任何内容
是我做错了什么,还是有更好的方法来实现这一点。如果您有任何帮助,我们将不胜感激。您需要关闭
多视图
选项,并对您的规则进行一些重构
Options -MultiViews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^category/([0-9a-zA-Z]+)/?$ category.php?id=$1 [L,NC,QSA]
RewriteRule ^product/([0-9a-zA-Z]+)/?$ product.php?id=$1 [L,NC,QSA]
RewriteRule ^page/([0-9a-zA-Z]+)/?$ page.php?page_id=$1 [L,NC,QSA]
选项
MultiViews
(请参阅)由Apache的内容协商模块使用,该模块在mod_rewrite
之前运行,并使Apache服务器匹配文件扩展名。因此,如果/file
是URL,那么Apache将提供/file.html
您是否已经调试了$\u GET(var\u dump)了?请尝试重写规则^(category | product | page)/([0-9a-zA-Z]+)$1.php?id=$2[PT]
清除浏览器缓存,然后再次测试