.htaccess向上移动一个目录级别问题

时间:2012-11-08 09:07:02

标签: .htaccess

我无法找到答案,所以它就是:

我需要获取这样的URL://mydomain/index.php?var=username(或https://如果用户想要安全连接)。

要使用我想要使用的好网址:// mydomain / user / username(这应保留在浏览器网址行中)以获取://mydomain/index.php?var = username

我已将.htaccess配置为:

RewriteEngine on
RewriteBase /
RewriteRule ^user/([^/]+)/?$ /index.php?var=$1 [L]

但它不起作用。当我使用重定向[R,L]它工作正常,但在浏览器的URL行中是它之后的丑陋URL:(

请你能帮助我,我有什么不对吗?

1 个答案:

答案 0 :(得分:1)

您的评论

  

它没有返回错误,它显示页面,但似乎URL是这样的:// mydomain / user /   相反od // mydomain /所有链接(包括相对路径)   指向// mydomain / user / ...而不是// mydomain /...)

描述正常(预期)行为。您的浏览器认为该页面是从// mydomain / user / userid提供的,因此将使用基本路径// mydomain / user /解析所有相关链接。更重要的是,你的htaccess规则允许一个可选的尾部斜杠,所以// mydomain / user / userid /也是有效的。这样的请求将解析相对于// mydomain / user / userid /的所有链接,因此“foo.html”的href将指向//mydomain/user/userid/foo.html。

这里唯一真正的解决方案是通过在开头添加“/”来使所有链接相对于根文件夹。例如,而不是像:

<a href="foo.html">
<img src="images/pic.jpg" alt="" />
<link rel="stylesheet" type="text/css" href="css/styles.css" />
<form action="processme.php" method="post">

你应该使用

<a href="/foo.html">
<img src="/images/pic.jpg" alt="" />
<link rel="stylesheet" type="text/css" href="/css/styles.css" />
<form action="/processme.php" method="post">