我正在尝试创建一个有2种或更多语言的网站,该网站基于URL和子文件夹进行更改。我对.htaccess文件没有太多的经验。
这是放置在.htaccess文件夹中的root文件中使用的代码:
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.phpsitename.com/en靶root/index.phpsitename.com/en/靶root/index.phpsitename.com/pagename靶root/pagename.phpsitename.com/pagename/靶root/pagename.phpsitename.com/en/pagename靶root/pagename.phpsitename.com/en/pagename/靶root/pagename.phpsitename.com/404靶root/error.phpsitename.com/404/靶root/error.phpsitename.com/en/404靶root/error.phpsitename.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页面。
有办法让所有案件都有效吗?
发布于 2018-10-31 10:30:07
看了几本指南后,我找到了解决问题的办法。
这是我的.htaccess代码:
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/pagename靶root/pagename.phpsitename.com/pagename/靶root/pagename.phpsitename.com/pagename.php靶root/pagename.phpsitename.com/en/pagename靶root/pagename.phpsitename.com/en/pagename/靶root/pagename.phpsitename.com/en/pagename.php靶root/pagename.php即使是这个案子
sitename.com/pagename.php/靶root/pagename.phpsitename.com/en/pagename.php/靶root/pagename.php最后,当我去404时,它带我到了页面sitename.com/fakelanguage/
https://stackoverflow.com/questions/53068862
复制相似问题