我有这个.htaccess文件,这是无效的,当我navegate到gotgage.local / category / gages /其中的gage部分没有被传递
RewriteEngine On
RewriteRule ^/category/(.*?)/$ category.php?p=$1 [rn]
为了测试category.php文件只是转储$ _POST,$ _GET和$ _SERVER 这是我打开页面时看到的内容。
GET
Array ( )
POST
Array ( )
SERVER
Array (
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.59 Safari/525.19
[HTTP_ACCEPT_ENCODING] => gzip,deflate,bzip2,sdch
[HTTP_ACCEPT] => text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
[HTTP_CACHE_CONTROL] => max-age=0
[HTTP_ACCEPT_LANGUAGE] => en-US,en
[HTTP_ACCEPT_CHARSET] => ISO-8859-1,*,utf-8
[HTTP_HOST] => gotgage.local
[HTTP_CONNECTION] => Keep-Alive
[PATH] => /usr/local/bin:/usr/bin:/bin
[SERVER_SIGNATURE] => Apache/2.2.9 (Ubuntu) PHP/5.2.6-2ubuntu4.2 with Suhosin-Patch Server at gotgage.local Port 80
[SERVER_SOFTWARE] => Apache/2.2.9 (Ubuntu) PHP/5.2.6-2ubuntu4.2 with Suhosin-Patch
[SERVER_NAME] => gotgage.local
[SERVER_ADDR] => 192.168.0.180
[SERVER_PORT] => 80
[REMOTE_ADDR] => 192.168.0.196
[DOCUMENT_ROOT] => /home/gotgage/www/
[SERVER_ADMIN] => [no address given]
[SCRIPT_FILENAME] => /home/gotgage/www/category.php
[REMOTE_PORT] => 56793
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => /category/gages/
[SCRIPT_NAME] => /category.php
[PATH_INFO] => /gages/
[PATH_TRANSLATED] => /home/gotgage/www/gages/
[PHP_SELF] => /category.php/gages/
[REQUEST_TIME] => 1241579116
[argv] => Array
(
)
[argc] => 0 )
从技术上讲,重定向正在运行但是我没有得到以下页面的变量,正确页面中的转储正确但我的变量没有被传递。
答案 0 :(得分:1)
嗯,以下对我有用。看起来它不喜欢领先的/
和[rn]
语法错误。
RewriteEngine On
RewriteRule ^category/(.*?)/$ category.php?p=$1
注意:无论如何它应该是[R,N]
,但在这种情况下,它们不再需要。
RewriteRule Flags Documentation - 显示您可能不想使用R
或N
的原因,但可能会有一些我们不知道的事情。
RewriteRule Documentation - 似乎表示.htaccess RewriteRules中没有前导/
(如果有RewriteBase)。无论哪种方式,尝试使用和不使用/
的规则,对我而言,它只能在没有。
答案 1 :(得分:0)
我不完全确定这是问题所在,但将标记设置为“[rn]
”无效。多个标记应使用逗号分隔,因此,如果您尝试同时放置R
和N
标记,则应为[R,N]
答案 2 :(得分:0)
有几件事情有点不清楚:
1)与正则表达式部分的预期匹配是什么:
(.*?)
这有点多余 - 假设您只想匹配斜杠之间的任何内容,以下就足够了:
(.*)
2)你设置了一个'rn'的标志,它似乎没有效果。有效标志的示例是:
[R]
[N]
[R,N]
但是,我不确定你真的想要一起使用R和N.