当我去
www.mydomain.tld/sk/
一切正常,链接没有改变。 但是当我删除正斜杠时
www.mydomain.tld/sk
页面更改为
www.mydomain.tld/domains/mydomain.tld/sk/?lang=sk
有人可以帮忙吗?如何避免链接被更改? 当我去www.mydomain.tld / sk时,我需要它保持不变。
.htaccess文件(1):
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301]
RewriteRule ^sk$ /index.php?lang=sk [L,QSA]
RewriteRule ^sk/$ /index.php?lang=sk [L,QSA]
RewriteRule ^sk/index /index.php?lang=sk [L,QSA]
顶部主目录中还有另一个 .htaccess文件(2) 它包含这些行
RewriteEngine On
RewriteCond %{REQUEST_URI} !^domains/
RewriteCond %{REQUEST_URI} !^/domains/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteCond %{DOCUMENT_ROOT}/domains/%2 -d
RewriteRule (.*) domains/%2/$1 [DPI,L]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^domains/[^/]+/(.+[^/])$ /$1/ [R]
Options -indexes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /?([A-Za-z0-9_-]+)/?$ index.php?id=$1 [QSA,L]
此.htaccess文件有助于导航我在服务器上运行的域。 所有网站都在目录/域中。 例如,www.mydomain.tld指向/domains/mydomain.tld目录。 在这个目录中是较短的htaccess文件(1)。
答案 0 :(得分:0)
不是那么容易,但我认为这是因为在.htaccess文件(1)中你的链接来自根目录,而不是根源......
尝试使用:.htaccess文件(1):
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301]
RewriteRule ^sk/?$ index.php?lang=sk [L,QSA]
RewriteRule ^sk/index index.php?lang=sk [L,QSA]
答案 1 :(得分:-1)
看看
RewriteCond %{REQUEST_URI} !^domains/
RewriteCond %{REQUEST_URI} !^/domains/
这里是你测试REQUEST_URI是否以“域”或“ / domains ”开头 但是在之前的htaccess中,您保证REQUEST_URI将以 www
开头你可能想要REQUEST_FILENAME而不是REQUEST_URI
答案 2 :(得分:-1)
我花了很多时间尝试在htaccess中解决它,但没有任何效果。 所以我只是301重定向php中的错误链接:
if ($_SERVER['REQUEST_URI']=="/domains/mydomain.tld/sk/?lang=sk") {
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.mydomain.tld/sk/");
exit();
}