清理网址无法正常工作

时间:2014-08-27 17:28:28

标签: apache .htaccess mod-rewrite

嘿,我整天都在努力解决这个问题,而且我是新手来清理网址。

我想改变的域名:

http://www.domain.tld/ausflug.php?lang=de

为:

http://www.domain.tld/ausflug/lang/de/

通过.htaccess。这是我的代码:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ausflug/lang/(.*)/ ausflug.php?lang=$1

我的问题是:

  • 如果我浏览我的页面,网址仍然是丑陋的。
  • 如果我想用干净的网址到达页面,它就不会显示所有内容 css和js的东西。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

首先,用这个替换你当前的代码(你的htaccess应该在根文件夹中)

Options +FollowSymLinks -MultiViews
RewriteEngine On

RewriteCond %{THE_REQUEST} \s/ausflug\.php\?lang=([a-z]{2}) [NC]
RewriteRule . /ausflug/lang/%1/? [R=301,L]

RewriteRule ^ausflug/lang/([a-z]{2})/$ /ausflug.php?lang=$1 [L]

这会将domain.tld/ausflug.php?lang=de重定向到domain.tld/ausflug/lang/de/,并在内部将其重写(没有任何重定向循环错误)到domain.tld/ausflug.php?lang=de

对于你的第二个问题:

  

如果我想使用干净的网址访问该网页,则不会显示所有内容   css和js的东西

只需为您的链接使用绝对路径(使用前导斜杠)。

示例:/css/file.css而不是css/file.css(否则它将查找错误的目录,因为您的规则正在生成一些虚拟目录)

或者您可以在<base href="/">之后的所有页面中添加此html标记<head>(而不是替换每个链接)