尝试了google,stackoverflow,youtube上提供的许多不同版本,但仍然无效。
我试图在.htaccess中使用的一个例子:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^index/([0-9]+)$ index.php?lang=$1 [L]
我的网址: http://mydmain.com/subfolder/?lang=en
我希望这个网址看起来像: http://mydmain.com/subfolder/en
答案 0 :(得分:1)
您的规则似乎与您要重写的任何网址都不匹配。首先,您尝试匹配index/
的规则,该规则在您在问题中提供的网址中根本不会出现。此外,您网址中的第二个路径段为en
,但您的规则仅匹配数字([0-9]
)。请改用此规则:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/([a-z][a-z])$ $1?lang=$2 [L,QSA]
这两个条件可确保您不会重写已映射到内容的网址。并且规则已更改为匹配以" / en"结尾的任何网址,或除" en"以外的任何2个字母。
答案 1 :(得分:0)
如果要输入yourdomain.com/subfolder/en
并在内部转到yourdomain/subfolder/?lang=en
,请将以下代码放在主目录.htaccess
文件中:
RewriteEngine On
RewriteRule ^subfolder/([A-Za-z0-9-\+]+)/?$ /subfolder/?lang=$1 [NC,L,QSA]
因此,上述规则将匹配子文件夹/(任何字母(大写&小)或数字)+
,这意味着重复前一个匹配一次或多次,然后使用?
有或没有{ {1}}最后,这使得比赛可选。
https://httpd.apache.org/docs/2.4/rewrite/intro.html
注意:清除浏览器缓存然后进行测试。