【发布时间】:2019-04-03 18:20:04
【问题描述】:
我正在尝试创建一个具有 2 种或更多语言的网站,该网站会根据带有子文件夹的 URL 进行更改。我对.htaccess 文件没有太多经验。
这是我在root 文件夹中的.htaccess 文件中使用的代码:
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
这就是我想要做的:
-
sitename.com/目标root/index.php -
sitename.com/en目标root/index.php -
sitename.com/en/目标root/index.php -
sitename.com/pagename目标root/pagename.php -
sitename.com/pagename/目标root/pagename.php -
sitename.com/en/pagename目标root/pagename.php -
sitename.com/en/pagename/目标root/pagename.php -
sitename.com/404目标root/error.php -
sitename.com/404/目标root/error.php -
sitename.com/en/404目标root/error.php -
sitename.com/en/404/目标root/error.php
我尝试了this answer 和this,但它不起作用。
如果转到sitename.com/en,一切正常。它加载index.php 文件。
但是当我转到 sitename.com/en/ 时,我会转到 404 页面。在sitename.com/en/pagename/ 上也是如此。
当我尝试转到 sitename.com/fakelanguage/ 时,我会转到 root/index.php 页面,而不是 404 页面。
有没有办法让所有案例都有效?
【问题讨论】:
-
这是一个 XY 问题。你不知道如何做 X,所以你尝试 Y。Y 不工作,所以你问 Y。 xyproblem.info
-
您真正想要的是一个国际化库,然后您只需维护一组文件,并将占位符传递给所选语言的翻译函数。
-
试试这个库,例如github.com/Philipp15b/php-i18n
标签: php apache .htaccess url mod-rewrite