0

我想重写一个 URL,如:

http://domainname.com/all-studio-methods

到:

http://domainname.com/review.php?id=25&cas=all-studio-methods

我的.htaccess文件目前如下所示:

Options +FollowSymlinks
RewriteEngine On
RewriteRule ^([^/\.]*)$ review.php?id=$1&cas=$2 [L]

但它不能正常工作。我究竟做错了什么?

4

1 回答 1

1

如评论中所述,您有以下规则:

RewriteRule ^([^/\.]*)$ review.php?id=$1&cas=$2 [L]

$1$2是在正则表达式中被匹配分组替换的反向引用,它^([^/\.]*)$只有 1 个分组,即整个匹配。$2由于您没有其他分组,因此将始终为空白。这也意味着这$1将是整个匹配项(例如all-studio-methods),您将获得这样的 URI:

review.php?id=all-studio-methods&cas=

这显然不是你想要的。评论问从哪里来id=25。它不是来自 URI /all-studio-methods,. 所以为了重写到id=25,它必须在 URI 的某个地方,例如:

http://domainname.com/25-all-studio-methods

然后你会有这样的规则:

RewriteRule ^([0-9]+)-([^/\.]*)$ review.php?id=$1&cas=$2 [L]

如果您真的不希望25-在 URI 中使用 ,则需要重写 php 代码以review.php使其不需要 id。它需要在给定cas.

或者,您可以创建一个重写映射以映射cas到一个 id。这将是几乎相同的事情,无论哪种情况,您都在编写代码来执行此操作。

于 2012-08-24T19:08:22.177 回答