mod_rewrite缺少尾随影响链接系统

时间:2014-04-16 19:17:32

标签: php apache .htaccess mod-rewrite

我试图通过在URL中实现语言代码(en / es)来使我的网站多语言化。到目前为止,它运行良好,所有链接自动切换到您选择的语言。除主页外。

mydomain.com/en/staff.php的链接使用正确的语言,所有链接都会自动生效(例如en / home.php)。

如果我忘记尾随斜线,那不能做到的就是家。 mydomain.com/en/完全正常,mydomain.com/en(无斜线)无法正确更新链接。

有没有办法使用mod_rewrite?或者我是否必须在HTML中手动写出链接?

Options -MultiViews
RewriteEngine on 
RewriteBase /

RewriteRule ^([a-zA-Z]{2})/?$  index.php?lang=$1 [QSA,L]
RewriteRule ^([a-zA-Z]{2})/(\w+)\.php  $2.php?lang=$1 [QSA,L]

1 个答案:

答案 0 :(得分:0)

您可以使用规则强制执行尾随斜杠将此规则放在根目录中.htaccess:

DirectorySlash On
Options -MultiViews
RewriteEngine on 
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule [^/]$ %{REQUEST_URI}/ [L,R=301]

RewriteRule ^([a-zA-Z]{2})/$  index.php?lang=$1 [QSA,L]
RewriteRule ^([a-zA-Z]{2})/(\w+)\.php$ $2.php?lang=$1 [QSA,L]