2012-01-23 54 views
0

道歉,如果这之前已经问过,但我已经搜索了全部的答案,但我一直没能找到一个令人满意的解决方案。重写规则在.htaccess显示地址栏中重写的URL

我有我的的httpdocs以下.htaccess文件:

Options +FollowSymlinks 
RewriteEngine on 

RewriteBase/

RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
RewriteCond %{REQUEST_URI} !^/users/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.+)$ users/$1 [L] 

这正确映射 “www.example.com/joebloggs” 到 “www.example.com/users/jobloggs” 和正确显示适当的索引页面。

问题是“www.example.com/users/jobloggs”显示在地址栏中,而不是原始(短)网址。非常感谢这方面的帮助。

回答

0

如果你说这是加载DirectoryIndex文件(例如index.html/index.php),那么我会说缺乏在RewriteRule替代尾随斜线的是这个问题。尝试类似:

RewriteRule ^(.+?)/?$ users/$1/ [L] 
+0

谢谢!添加斜杠确实解决了地址栏问题。但是,正如你在答案中提到的那样,规则还不完全正确。我现在无法导航到其他页面,因为点击链接会将我带到www.example.com/thelink.html,而不是www.example.com/joebloggs/thelink.html。 – Kev

+0

您的源代码中包含哪些网址?你有'/ thelink.html'吗? – JMM

+0

每个用户目录下都有一个完整的站点。使用我现在拥有的RerwiteRule,如果我浏览到www.example.com/joebloggs,我可以看到索引页,但无法浏览网站。如果我浏览到www.example.com/joebloggs/(注意尾部斜线),它工作正常。 – Kev