Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用.htaccess文件重写多种语言的友好php URL_Php_.htaccess - Fatal编程技术网

使用.htaccess文件重写多种语言的友好php URL

使用.htaccess文件重写多种语言的友好php URL,php,.htaccess,Php,.htaccess,我有几个网站,我建立了一个CMS,将保存在一个XML文件中的语言,并根据页面和语言选择器,它将显示正确的数据。我通常为每个站点提供8种不同的语言,URL如下所示: 我正试图将其改写为如下所示: SetEnv PHP_VER 5_TEST SetEnv REGISTER_GLOBALS 0 RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-

我有几个网站,我建立了一个CMS,将保存在一个XML文件中的语言,并根据页面和语言选择器,它将显示正确的数据。我通常为每个站点提供8种不同的语言,URL如下所示:

我正试图将其改写为如下所示:

SetEnv PHP_VER 5_TEST
SetEnv REGISTER_GLOBALS 0

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9]+)$ index.php?lang=$1 [QSA,L]

我花了好几个小时在论坛上搜索,没能找到一个有效的解决方案。我的.htaccess文件当前如下所示:

SetEnv PHP_VER 5_TEST
SetEnv REGISTER_GLOBALS 0

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9]+)$ index.php?lang=$1 [QSA,L]

这没有任何作用,URL仍然是丑陋的继子版本。上面的链接是指向其中一个站点的实际链接。一旦我解决了这个问题,我需要将它应用到几个网站,但我一直在绞尽脑汁试图解决这个问题。有人能告诉我我做错了什么吗?

这应该在根目录下的一个.htaccess文件中工作:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -f  [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]

RewriteRule ^([^/]+)/([^.]+)\.php  /$2.php?lang=$1 [L,NC,QSA]

嗯,好吧,这似乎奏效了。但是现在我所有的相关链接都被弄乱了,因为页面认为它更深一层。有没有办法解决这个问题,还是我现在就要把所有事情都绝对化。。。也许我的答案中的修改解决了这个问题。如果没有,请检查如何使用基本元素。可能会有帮助。是的,通过在我的标题中添加图像的所有相关链接,这样仍然有效。非常感谢。现在我只需要为索引页面添加一个语言检测,我就可以了。