2012-05-11 52 views
2

我需要http://profiles.mysite.com/Me来显示http://mysite.com/profile.php?user=Me会显示什么。.htaccess子域的文件夹查询字符串

“我”根据用户名而变化。它可以包含空格,不是真正的文件夹。

我不希望URL在地址栏中更改。

回答

3
  1. 启用mod_rewrite的,并通过httpd.conf
  2. 的.htaccess在httpd.conf
  3. 启用mod_proxy的

最后把这个代码放到您的.htaccessDOCUMENT_ROOT目录

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f [OR] 
RewriteCond %{REQUEST_FILENAME} !-d [OR] 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule^- [L] 

RewriteRule ^([^\s]+)\s([^\s]+)(\s.*)?$ $1+$2$3 [L] 
RewriteRule ^([^\s]+)\s $1 [L] 

RewriteCond %{HTTP_HOST} ^profiles\.mysite\.com$ [NC] 
RewriteRule ^(.*)$ http://mysite.com/profile.php?user=$1 [P,L,QSA] 

此答案现在将支持URI中的任何空格,因为它是基于递归的规则。换句话说一个URI是这样的:

http://profiles.mysite.com/foo bar baz 

将被代理:

http://mysite.com/profile.php?user=foo+bar+baz 

虽然网址在浏览器仍将:

http://profiles.mysite.com/foo&20bar%20baz 
+1

谢谢,但这会导致URL发生更改。 – Dav

+1

这就是说mod_proxy模块没有加载到httpd.conf中。请注意,我使用标志'P'而不是标志'R'。在这里看到更多的细节:http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html – anubhava

+1

得到它的工作,感谢你们俩! – Dav

1

把下面的代码在.htaccess文件中的Web根目录应该给你你需要的东西:

RewriteCond %{HTTP_HOST} ^profiles.mysite.com 
RewriteRule ^(.*)$ mysite.com/profile.php?user=$1 [L] 
+0

它说:“找不到 请求的URL /我在这台服务器上找不到。“ – Dav

+1

将RewriteEngine置于.htaccess文件的顶部 - 当然,确保重写模块已加载到您的Web服务器中,并且AllowOverrides All命令是conf文件中Web目录指令的一部分。 – Ansari

+0

这3件事都已经完成了。它仍然无法工作。 :( – Dav

相关问题