我如何让.htaccess做我想做的事情? :)(将查询字符串附加到网址)

时间:2010-08-08 09:24:27

标签: apache .htaccess mod-rewrite seo

目前我的.htaccess看起来像这样......

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


RewriteRule ^(.*)$ $1.php [L,QSA]  

它目前将任何/xxx.php文件更改为/ xxx。这对SEO很有用。但是,我还希望htaccess先生将某些URL转换为URL +查询字符串。例如,当用户进入

/特定/ somerandominfo

然后将somerandominfo传递给specific.php文件。我通常使用重写来做这个没有问题,但由于我喜欢重写,我无法弄清楚如何做到这一点。

例如,如果我添加

RewriteRule ^specific/([^/]+)$ /specific.php?somerandominfo=$1 [NC]  

到我的.htaccess,然后点击/特定/ somerandominfo只给我一个很大的500内部服务错误。

任何来自你的阿帕克大师的帮助都会如此,非常酷。

谢谢!

P.S。谁也想投入他们喜欢的任何其他酷的SEO技巧?我会给你烤饼干。

2 个答案:

答案 0 :(得分:1)

您收到500错误,因为您的规则正在创建无限循环。检查apache错误日志以查看是否为true。所以你应该正确设计你的规则。也许是这样的:

RewriteRule ^([^/]*)$ $1.php [L]
RewriteRule ^(.*)/(.*)$ $1.php?var=$2 [L]

答案 1 :(得分:0)

RewriteRule ^specific/([^/]+)$ /specific.php?somerandominfo=$1 [NC]

这大多是正确的。我只需添加B标志,如下所示:

RewriteRule ^specific/([^/]+)$ /specific.php?somerandominfo=$1 [NC,B]

这会导致捕获组$1被正确转义以用于查询字符串。请注意,您仍然可以使用QSA来保留原始请求中使用的查询参数(除somerandominfo之外)。

也许你想发布你真正的RewriteRule。