首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.htaccess -根文件夹中的一种语言,子目录中的其他语言

.htaccess -根文件夹中的一种语言,子目录中的其他语言
EN

Stack Overflow用户
提问于 2018-10-30 16:27:08
回答 1查看 409关注 0票数 0

我正在尝试创建一个有2种或更多语言的网站,该网站基于URL和子文件夹进行更改。我对.htaccess文件没有太多的经验。

这是放置在.htaccess文件夹中的root文件中使用的代码:

代码语言:javascript
复制
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

#Multi lang version
RewriteCond %{REQUEST_FILENAME} -s  [OR]
RewriteCond %{REQUEST_FILENAME} -l  [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^(en) index.php  [L,NC]
RewriteRule ^(en)/(.*)$ $2.php  [L,NC]
RewriteRule ^([^.]+)$ $1.php  [L,NC]

ErrorDocument 404 /error.php

这就是我想做的:

  1. sitename.com/root/index.php
  2. sitename.com/enroot/index.php
  3. sitename.com/en/root/index.php
  4. sitename.com/pagenameroot/pagename.php
  5. sitename.com/pagename/root/pagename.php
  6. sitename.com/en/pagenameroot/pagename.php
  7. sitename.com/en/pagename/root/pagename.php
  8. sitename.com/404root/error.php
  9. sitename.com/404/root/error.php
  10. sitename.com/en/404root/error.php
  11. sitename.com/en/404/root/error.php

我试过this answerthis,但是不起作用。

如果去sitename.com/en,一切都正常。它加载index.php文件。但是当我去sitename.com/en/的时候,我会带我去404页面。在sitename.com/en/pagename/上也是如此。当我尝试去sitename.com/fakelanguage/时,我会带我去root/index.php页面,而不是404页面。

有办法让所有案件都有效吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-31 10:30:07

看了几本指南后,我找到了解决问题的办法。

这是我的.htaccess代码:

代码语言:javascript
复制
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

#Multi language version
RewriteCond %{REQUEST_FILENAME} -s  [OR]
RewriteCond %{REQUEST_FILENAME} -l  [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

#EN
RewriteRule ^en/([^.]+)/?$ $1  [L,NC]
RewriteRule ^en/([^.]+\.php)/?$ $1  [L,NC]
RewriteRule ^en/?$ index.php  [L,NC]

#IT
RewriteRule ^it/([^.]+)/?$ $1  [L,NC]
RewriteRule ^it/([^.]+\.php)/?$ $1  [L,NC]
RewriteRule ^it/?$ index.php  [L,NC]

RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ $1.php  [L,NC]

ErrorDocument 404 /error.php

它对问题中列出的所有案例都很有效:

  • sitename.com/pagenameroot/pagename.php
  • sitename.com/pagename/root/pagename.php
  • sitename.com/pagename.phproot/pagename.php
  • sitename.com/en/pagenameroot/pagename.php
  • sitename.com/en/pagename/root/pagename.php
  • sitename.com/en/pagename.phproot/pagename.php

即使是这个案子

  • sitename.com/pagename.php/root/pagename.php
  • sitename.com/en/pagename.php/root/pagename.php

最后,当我去404时,它带我到了页面sitename.com/fakelanguage/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53068862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档