.htaccess双变量的麻烦

时间:2013-05-13 14:39:22

标签: php .htaccess

我正在研究我网站的htaccess。

我有一块.htacess:

ErrorDocument 404 /404.html

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


RewriteRule ^/([a-zA-z0-9]+)/([a-zA-z0-9]+).html$ index.php?lang=$2&seo=$1 [QSA,L]

RewriteRule ^/([a-zA-z0-9]+).html$ index?seo=$1 [QSA,L]

我正在寻找这个.htaccess是这样的:http://mywebsite.com/en/test-page.htmlhttp://mywebsite.com/index.php?lang=en&seo=test-page作为“lang”和“test-page”作为“seo”进行计数。

问题是这会引发404错误。

有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:0)

试试这个我认为index?seo的问题必须是index.php?seo并跳过标记,如果你在模式匹配时将其放到S=1之后跳过一个RewriteRule

 RewriteRule ^/([a-zA-z0-9]+)/([a-zA-z0-9]+).html$ index.php?lang=$1&seo=$2 [S=1,QSA,L]

 RewriteRule ^/([a-zA-z0-9]+).html$ index.php?seo=$1 [QSA,L]

如果您想要传递查询,请使用此

 RewriteRule ^/([a-zA-z0-9]+)/([a-zA-z0-9]+).html(.*)$ index.php?lang=$1&seo=$2$3 [S=1,QSA,L]

 RewriteRule ^/([a-zA-z0-9]+).html(.*)$ index.php?seo=$1$2 [QSA,L]

答案 1 :(得分:0)

尝试从正则表达式中删除前导斜杠:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-z0-9]+)/([a-zA-z0-9]+)\.html$ index.php?lang=$1&seo=$2 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-z0-9]+)\.html$ index.php?seo=$1 [QSA,L]

另请注意,RewriteCond仅适用于一个RewriteRule