.htaccess 如何使用htaccess从example.com/en转发到example.com/en/?
我一直在尝试为我的htaccess文件编写重写规则,该文件应该从例如www.example.com/en转发到www.example.com/en/ 我尝试:.htaccess 如何使用htaccess从example.com/en转发到example.com/en/?,.htaccess,rewrite,.htaccess,Rewrite,我一直在尝试为我的htaccess文件编写重写规则,该文件应该从例如www.example.com/en转发到www.example.com/en/ 我尝试:重写规则^en/?$en[L] 但什么也没发生。有人知道如何做到这一点吗?使用: 使用: 您可以在.htaccess文件中使用以下规则: Options +FollowSymLinks -MultiViews RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond
重写规则^en/?$en[L]
但什么也没发生。有人知道如何做到这一点吗?使用:
使用:
您可以在.htaccess文件中使用以下规则:
Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(?![^/]*/).*$ %{REQUEST_URI}/ [L,R]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)/$ index.php?lang=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)/([^/]*)/?$ index.php?action=$2&lang=$1 [QSA,L]
这将:
- 外部重定向:
到/en
和内部重定向到/en/
/index.php?lang=en
- 内部重定向:
到/fr/login
/index.php?action=login&lang=fr
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
您可以在.htaccess文件中使用以下规则:
Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(?![^/]*/).*$ %{REQUEST_URI}/ [L,R]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)/$ index.php?lang=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)/([^/]*)/?$ index.php?action=$2&lang=$1 [QSA,L]
这将:
- 外部重定向:
到/en
和内部重定向到/en/
/index.php?lang=en
- 内部重定向:
到/fr/login
/index.php?action=login&lang=fr
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
/en/
是文档根目录下的一个物理目录吗?不,这也是一个重写规则,它将重写/en/to index.php?lang=enOK 2个问题:1代码>toscho提供的答案对您有用吗<代码>2
之所以将/en
转发到/en/
是因为您已经将/en/
转发到index.php?lang=en
?这可能不是正确的方式,但我希望/en/应该是转发到index.php?lang=en的标准方式,如果用户键入/en,则应将其转发到/en/(当然,这将转发到index.php?lang=en)。答案没有改变任何东西,它不起作用。好吧,我想现在我明白你想做什么了。请看下面我的答案,让我知道它是否对你有效。/en/
是DOCUMENT\u ROOT下的物理目录吗?不,这也是一个重写规则,将/en/重写为index.php?lang=enOK 2个问题:1。
没有toscho提供的答案对你有用?2。
为什么要将/en
转发到/en/
呢,因为你已经将/en/
转发到index.php?lang=en
?也许这不是正确的方式,但我希望/en/应该是转发到index.php?lang=en的标准方式,如果用户输入/en这将把他转发到/en/(当然,这将转发到index.php?lang=en)。答案没有改变任何东西,它不起作用。好吧,我想现在我明白你在做什么了。请看下面我的答案,让我知道它是否对你有效。请检查我更新的答案以了解你的要求。同时请记住,它不会在所有内容中添加尾随斜杠/
。它只会在URI为n的情况下这样做一个文件或目录。很好,只是一件事,登录后不应该有一个/,所以应该是/fr/login检查我的更新答案。我已经测试过了,效果很好。请将此代码完整复制/粘贴到你的文件中。谢谢你的回答,但是从/en到/en/的转发不再有效。你确定吗?因为它仍然是adding在/en
之后为我添加尾随斜杠。建议您重新启动浏览器或清除缓存。请检查我的更新答案以了解您的要求。还要记住,它不会将尾随斜杠/
添加到所有内容中。它只会对不是文件或目录的URI执行此操作。非常好,只是一件事,不应该有/登录后,应该是/fr/login检查我的更新答案。我已经测试过了,效果很好。请将此代码完整复制/粘贴到您的文件中。谢谢您的回答,但是从/en到/en/的转发不再有效。您确定吗?因为它在/en
之后仍在为我添加尾部斜杠。建议您重新启动请关闭浏览器或清除缓存。