在我的.htaccess中,使用以下代码将所有无法找到的请求网址重写为main.php:
RewriteCond $1 ^
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ main.php?document=$1 [L,QSA]
这意味着,如果某人正在键入www.my-site.com/contact_us.php
该页面将显示,因为该文件存在且上述重写规则将不会应用。
问题在于使用多语言时,因为我为每种语言使用虚拟文件夹。例如意大利语将是:
www.my-site.com/it/contact_us.php
如何针对位于这些虚拟文件夹中的所有现有文件停止上面的重写规则?
答案 0 :(得分:0)
RewriteCond $1 ^
RewriteRule ^([a-z]{2})/(.*)$ main.php?lang=$1&document=$2 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ main.php?document=$1 [L,QSA]
答案 1 :(得分:0)
您可以像这样使用您的规则:
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteCond %{DOCUMENT_ROOT}/$1/$2 !-f
RewriteCond %{DOCUMENT_ROOT}/$1/$2 !-d
RewriteRule ^([a-z]{2})/(.*)$ main.php?lang=$1&document=$2 [L,QSA,NC]
RewriteRule ^(.+)$ main.php?document=$1 [L,QSA]