【问题标题】:htaccess force www, remove "index.php", create clean url and add trailing backslashhtaccess 强制 www,删除“index.php”,创建干净的 url 并添加尾部反斜杠
【发布时间】:2014-02-01 16:54:33
【问题描述】:

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

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

http://www.mydomain.com/

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

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]

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,这正是我所需要的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 2021-12-14
    • 2023-03-17
    相关资源
    最近更新 更多