1

我正在处理我网站的 URL。我刚刚重写了来自的 URL

http://www.website.com/index.php?url=some-text

http://www.website.com/some-text

为此,我使用以下 .htaccess 代码

Options +SymLinksIfOwnerMatch
RewriteEngine on

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]


现在,我想page number在 URL 中添加另一个变量。

http://www.website.com/index.php?url=some-text&page=1

我想像这样重写它

http://www.website.com/some-text/1/
AND
http://www.website.com/some-text/1

我尝试了以下代码,但由于某种原因它无法正常工作,它显示服务器错误。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)/(.*)$ index.php?url=$1&page=$2 [L,QSA]
RewriteRule ^(.*)/(.*)/$ index.php?url=$1&page=$2 [L,QSA]
4

1 回答 1

1

您不需要 2 条新规则。只有一个可选/的就足够了。您的完整代码:

Options +SymLinksIfOwnerMatch -MultiViews
RewriteEngine on

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?url=$1&page=$2 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([^/]+)/?$ index.php?url=$1 [L,QSA]

您的新代码中的另一个问题是RewriteCond最后没有申请,RewriteRule因为这些仅适用于下一个RewriteRule

于 2013-09-29T05:37:23.383 回答