我尝试了本网站提出的所有解决方案,但没有任何效果。
这就是我所做的:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /folder/
RewriteRule ^([a-z]{2})$ index.php?lang=$1 [L]
RewriteRule ^([^/]*)$ index.php?page=$1 [L]
RewriteRule ^([a-z]{2})/([^/]*)$ index.php?lang=$1&page=$2 [L]
实质上,我想以这种格式访问页面:
website.com/en
website.com/en/download
website.com/download
并翻译为:
website.com/index.php?lang=en
website.com/index.php?lang=en&page=download
website.com/index.php?page=download
任何解决方案?
感谢。
答案 0 :(得分:2)
您的第一个和最后一个规则很好,但是对于最后一个选项 - 没有语言文件夹的页面 - 您只需将其重定向到index.php并确保没有另外的重复,以下列方式
RewriteRule ^([a-z]{2})/(.*)$ index.php?lang=$1&page=$2 [L]
RewriteRule ^([a-z]{2})$ index.php?lang=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1 [L]
答案 1 :(得分:2)
我刚刚在我的开发服务器上测试了以下规则,它们似乎达到了你想要的效果。
RewriteBase /folder/
RewriteRule ^([a-zA-Z]{2})$ index.php?lang=$1 [NC,L]
RewriteRule ^([a-zA-Z]+)$ index.php?page=$1 [NC,L]
RewriteRule ^([a-z]{2})/([a-zA-Z]+)$ index.php?lang=$1&page=$2 [NC,L]
在用于测试的脚本/folder/index.php
中:
<?php
print_r($_GET);
?>
网址示例:
https://localhost/en/
-> Array ( [lang] => en )
https://localhost/download/
-> Array ( [page] => download )
https://localhost/en/download/
-> Array ( [lang] => en [page] => download )