我正在研究我网站的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.html
将http://mywebsite.com/index.php?lang=en&seo=test-page
作为“lang”和“test-page”作为“seo”进行计数。
问题是这会引发404错误。
有没有办法解决这个问题?
答案 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
。