我有一个这样的商店网址
我正在尝试用 .htaccess 将其重写为 https://domain.eu/lp/index.php?id=$2&lang=$1
我非常接近
RewriteRule ^/?(hr|sk|pl|cz|ro|it)/lp/(\d+)?$ /lp/index.php?id=$2&lang=$1
工作正常,但当 URL 中没有 lang 时,我似乎无法找到处理这种情况的方法。
所以这也是有效的:https://domain.eu/lp/9200 但在这种情况下我希望 $1 只是空的(或者当它不存在时有一个默认值)
我知道“?”表示“一或零”次,这就是我尝试的原因
RewriteRule ^/?[(hr|sk|pl|cz|ro|it)?]/lp/(\d+)?$ /lp/index.php?id=$2&lang=$1
但它没有按预期工作。任何方向正确的点都将不胜感激。
答案 0 :(得分:0)
使用您展示的样品,尝试;请按以下方式获取您的 htaccess 规则文件。在测试您的网址之前,请务必清除浏览器缓存。
RewriteEngine ON
##Rewrite rule for uris which have only 1 parameter.
RewriteRule ^lp/(\d+)/?$ /lp/index.php?id=$1 [NC,L]
##Rewrite rule for uris which 2 parameters.
RewriteRule ^(hr|sk|pl|cz|ro|it)/lp/(\d+)/?$ /lp/index.php?id=$2&lang=$1 [NC,L]
OR 使用以下解决方案,以防您尝试访问的 uri 不存在。确保使用第一个解决方案或这个解决方案,一次只使用一次。
RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^lp/(\d+)/?$ /lp/index.php?id=$1 [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(hr|sk|pl|cz|ro|it)/lp/(\d+)/?$ /lp/index.php?id=$2&lang=$1 [NC,L]