我正在尝试重写我的 URL 的子域名。
http://用户名.domain.com 将显示内容http://www.domain.com/user.php?u=用户名但 URL 仍为 http://用户名.domain.com 。(我的意思是网址屏蔽)
(用户名可以包含 az 0-9 和连字符) 如果子域名万维网或者api,不要重定向
我用它.htaccess
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index\.php$
RewriteCond %{HTTP_HOST} !^www\.domain\.com
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com
RewriteRule .* /user.php?u=%1 [L]
(根据@mfarver 的建议)我正在尝试这个
RewriteEngine on
RewriteRule .* /user.php?u=%1 [L]
但这次出现 500 内部服务器错误:
[Mon May 30 20:10:44 2011] [alert] [client 81.6.xx.xxx] /home/blablabla/public_html/.htaccess: AllowOverride not allowed here
(来自错误日志)
我的服务器httpd配置文件文件的虚拟主机设置
<VirtualHost 109.73.70.169:80>
<IfModule mod_userdir.c>
UserDir disabled
UserDir enabled USERNAME
</IfModule>
<IfModule concurrent_php.c>
php4_admin_value open_basedir "/home/USERNAME/:/usr/lib/php:/usr/php4/lib/php:/usr/local/lib/php:/usr/local/php4/lib/php:/tmp"
php5_admin_value open_basedir "/home/USERNAME/:/usr/lib/php:/usr/local/lib/php:/tmp"
</IfModule>
<IfModule !concurrent_php.c>
<IfModule mod_php4.c>
php_admin_value open_basedir "/home/USERNAME/:/usr/lib/php:/usr/php4/lib/php:/usr/local/lib/php:/usr/local/php4/lib/php:/tmp"
</IfModule>
<IfModule mod_php5.c>
php_admin_value open_basedir "/home/USERNAME/:/usr/lib/php:/usr/local/lib/php:/tmp"
</IfModule>
<IfModule sapi_apache2.c>
php_admin_value open_basedir "/home/USERNAME/:/usr/lib/php:/usr/php4/lib/php:/usr/local/lib/php:/usr/local/php4/lib/php:/tmp"
</IfModule>
</IfModule>
ServerName DOMAIN.net
ServerAlias *.DOMAIN.net
<Directory "/home/USERNAME/public_html">
Options FollowSymLinks
Allow from all
AllowOverride All
</Directory>
DocumentRoot /home/USERNAME/public_html
ServerAdmin [email protected]
UseCanonicalName Off
CustomLog /usr/local/apache/domlogs/DOMAIN.net combined
CustomLog /usr/local/apache/domlogs/DOMAIN.net-bytes_log "%{%s}t %I .\n%{%s}t %O ."
## User USERNAME # Needed for Cpanel::ApacheConf
<IfModule mod_suphp.c>
suPHP_UserGroup USERNAME USERNAME
</IfModule>
<IfModule !mod_disable_suexec.c>
SuexecUserGroup USERNAME USERNAME
</IfModule>
ScriptAlias /cgi-bin/ /home/USERNAME/public_html/cgi-bin/
# To customize this VirtualHost use an include file at the following location
# Include "/usr/local/apache/conf/userdata/std/2/USERNAME/DOMAIN.net/*.conf"
</VirtualHost>
此外,*.DOMAIN.net 也已添加到我的 DNS ZONES 中一个记录。
答案1
如果您使用 .htaccess 文件,您的服务器应该对这些域上下文具有 AllowOverride 方向。请检查您的服务器常规配置。
您还需要对这种重写进行重定向。
而不是:RewriteRule .* /user.php?u=%1 [L]
使用:RewriteRule .*http://www.domain.com/user.php?u=%1[右,左]
编辑后:您不需要重定向。
答案2
这应该可以完成工作 - 您需要“PT”来阻止它成为重定向。 如果不是重定向,则浏览器中的 URL 不会改变:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index\.php$
RewriteCond %{HTTP_HOST} !^www\.domain\.com
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com
RewriteRule .* /user.php?u=%1 [PT,L]