0

我的 .htaccess 有问题,因为它只适用于某些主机。

我尝试使用重写规则。

http://example.com/p/page_name适用于所有主机,但是当我尝试添加某些内容后page_name却没有。

.htaccess

Options +FollowSymLinks
RewriteEngine on

RewriteRule p/(.*)$ index.php?page=$1
RewriteRule p/portfolio/([0-9]+)$ p/portfolio&id=$1 

最后一行并不总是有效。

4

2 回答 2

0

p/portfolio&id=$1和号不应该是一个问号吗?

于 2012-12-20T22:27:12.770 回答
0

您需要重新安排 2 条规则。现在,正则表达式的第一条规则p/(.*)$是吞噬所有请求,包括看起来像/p/portfolio/1234567. 此外,您可以添加^字符以匹配 URI 的开头以使其更准确,并使用LandQSA标志:

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]
于 2012-12-20T23:19:59.863 回答