【发布时间】:2012-05-19 15:01:00
【问题描述】:
我需要http://profiles.mysite.com/Me 来显示http://mysite.com/profile.php?user=Me 会显示的内容。
“我”会根据用户名而变化。它可以包含空格,并且不是真正的文件夹。
我不想更改地址栏中的 URL。
【问题讨论】:
标签: .htaccess redirect query-string subdomain
我需要http://profiles.mysite.com/Me 来显示http://mysite.com/profile.php?user=Me 会显示的内容。
“我”会根据用户名而变化。它可以包含空格,并且不是真正的文件夹。
我不想更改地址栏中的 URL。
【问题讨论】:
标签: .htaccess redirect query-string subdomain
将以下代码放入 web 根目录的 .htaccess 文件中应该可以满足您的需求:
RewriteCond %{HTTP_HOST} ^profiles.mysite.com
RewriteRule ^(.*)$ mysite.com/profile.php?user=$1 [L]
【讨论】:
httpd.conf 启用 mod_rewrite 和 .htaccess
httpd.conf 中启用 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
虽然浏览器中的 URL 将保留:
http://profiles.mysite.com/foo&20bar%20baz
【讨论】:
P 而不是标志 R。更多详情请看这里:httpd.apache.org/docs/2.0/mod/mod_rewrite.html
user name 但不会处理 the user name。