我正在使用localhost,在我的index.php页面中,我有以下代码:
<? echo 'LANG IS '.$_GET['lang']; ?>
当我在URL上键入localhost时,它显然只显示LANG IS,但是如果我输入localhost / en,我会看到404 Not Found消息。我必须输入localhost?lang = en来显示我的index.php代码。我想输入localhost / en而不是localhost?lang = en并获得相同的结果。
我正在使用Apache2并且我启用了mod_rewrite。我还有一个带有此代码的.htaccess文件(我已经更改并测试了很多次):
RewriteEngine on
RewriteRule ^/([a-zA-Z0-9]+|)/?$ index.php?lang=$1 [L,QSA]
我已经读了几天.htaccess和干净的网址,但我无法做到这一点。有任何想法吗?非常感谢你。
答案 0 :(得分:1)
很可能你的.htaccess甚至没有启用。 先验证
要检查您的.htaccess
是否已启用,请尝试在.htaccess
上添加相同的随机/垃圾文本,看看它是否生成500(内部服务器)错误?
它未启用,那么您需要在AllowOverride All
&gt;`部分中<Directory "/var/www/
行。
启用后,遵循规则应该适合您:
RewriteEngine on
RewriteRule ^(\w+)/?$ index.php?lang=$1 [L,QSA]
答案 1 :(得分:0)
尝试摆脱模式中的前导斜杠:
RewriteEngine on
RewriteRule ^([a-zA-Z0-9]+|)/?$ index.php?lang=$1 [L,QSA]
通过htaccess文件中的规则发送的URI会删除前导斜杠,因此模式需要省略它。
答案 2 :(得分:0)
问题可能出在正则表达式中。 试试这个:
RewriteEngine on
RewriteRule ^/([a-zA-Z0-9]+)/ /index.php?lang=$1 [L,QSA]