目前我的.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技巧?我会给你烤饼干。
答案 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。