URL 重写问题

URL 重写问题

我正在尝试重写我的 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]

相关内容