Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP文件在.htaccess重写规则之后无法访问$\u GET变量_Php_.htaccess_Get - Fatal编程技术网

PHP文件在.htaccess重写规则之后无法访问$\u GET变量

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

我在我的网站上的URL中有许多带有查询字符串的PHP页面。我正在尝试更改搜索引擎优化的URL,为此我使用了一个.htaccess文件

我是.htaccess的新手,所以这是一个相当基本的问题,我不确定我是否做得对,或者是否有更好的方法来做

我的.htaccess文件:

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]
清除浏览器缓存,然后再次测试