htaccess force www,删除“index.php”,创建干净的url并添加尾部反斜杠

时间:2014-02-01 02:03:06

标签: regex apache .htaccess mod-rewrite

我有一个小的信息网页,可以用日语和英语查看(日语是默认的)。它在技术上只有一个php文件,只是根据URL切换内容的语言。

我想强制www并在两种语言版本上强制使用尾部斜杠。默认的日语页面我只想显示主站点URL,如下所示:

http://www.mydomain.com/

然后在英文版上,我希望它转到如下所示的网址:

http://www.mydomain.com/en/

我无法弄清楚如何强制反斜杠,当我用http://www.mydomain.com/en/index.php之类的东西测试时, 它将其更改为http://www.mydomain.com/en?en

我当前的.htaccess文件如下所示:

RewriteEngine on
RewriteBase /

#Redirect all non-www traffic to the www version of site
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

#Remove 'index.php' from requests
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L,QSA]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index\.php [NC]
RewriteRule ^ %1 [R=301,L]

#Force clean URLs
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/(index\.php)?\?l=(en)$ [NC]
RewriteRule ^ %1\/%3\/ [R=301,L]

1 个答案:

答案 0 :(得分:0)

您可以在第一个www规则下方插入此新规则,以强制使用尾随斜杠:

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