我的网站按语言划分为多个文件夹:
/
/en/
index.php
about-us.php
faq.php
...
/fr/
index.php
about-us.php
faq.php
...
...
etc.
如果有人试图输入en
,我希望有一个重写规则自动重写到mydomain.com/about-us.php
文件夹。
仅供参考,我还有一个删除扩展名的重写规则,所以我确实要确保mydomain.com/about-us
重写为mydomain.com/en/about-us
。这是我现有的重写规则:
# allows for extension-agnostic urls
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php
那有道理吗?有人帮帮我吗?
编辑:
@Gumbo -
这是我的.htaccess
文件的样子(这就是它的全部内容):
RewriteEngine On
# defaults to the english site
RewriteRule !^[a-z]{2}/ /en%{REQUEST_URI} [L,R=301]
# allows for extension-agnostic urls
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php
此文件位于我的网站的根目录中(不在语言文件夹中)。我已经重新加载了我的网络服务器,只是为了安全起见,当我尝试转到mydomain.com/about-us
时仍然收到此错误消息:
Not Found
The requested URL /about-us was not found on this server.
...其中mydomain.com/en/about-us
工作正常。
还有其他想法吗?
答案 0 :(得分:3)
将此规则放在您的规则之前:
RewriteRule !^(fr|en)/ /en%{REQUEST_URI} [L,R=301]
或者更一般:
RewriteRule !^[a-z]{2}/ /en%{REQUEST_URI} [L,R=301]