我无法找到答案,所以它就是:
我需要获取这样的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:(
请你能帮助我,我有什么不对吗?
答案 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">