2

我需要http://profiles.mysite.com/Me展示会展示什么http://mysite.com/profile.php?user=Me

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

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

4

2 回答 2

3
  1. 通过启用 mod_rewrite 和 .htaccesshttpd.conf
  2. 在你的启用 mod_proxyhttpd.conf

最后把这段代码放在你.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
于 2012-05-11T06:40:02.627 回答
1

将以下代码放入 web 根目录的 .htaccess 文件中应该可以满足您的需求:

RewriteCond %{HTTP_HOST} ^profiles.mysite.com
RewriteRule ^(.*)$ mysite.com/profile.php?user=$1 [L]
于 2012-05-11T02:21:47.440 回答