我的.htaccess有问题,因为它只适用于某些主机。
我尝试使用重写规则。
http://example.com/p/page_name
适用于所有主机,但当我尝试在page_name
之后添加内容时,它不会。
Options +FollowSymLinks
RewriteEngine on
RewriteRule p/(.*)$ index.php?page=$1
RewriteRule p/portfolio/([0-9]+)$ p/portfolio&id=$1
最后一行并不总是有效。
答案 0 :(得分:0)
p/portfolio&id=$1
&符号不应该成为问号吗?
答案 1 :(得分:0)
您需要重新安排2条规则。现在,带有正则表达式p/(.*)$
的第一条规则正在吞噬所有请求,包括看起来像/p/portfolio/1234567
的请求。此外,您可以添加^
字符以匹配URI的开头,以使其更准确并使用L
和QSA
标记:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^p/portfolio/([0-9]+)$ /p/portfolio?id=$1 [L,QSA]
RewriteRule ^p/(.*)$ index.php?page=$1 [L,QSA]
或者,您可以将两个规则概括为一个:
RewriteRule ^p/([^/]+)(/([0-9]+))?$ /index.php?page=$1&id=$3 [L,QSA]