Назад | Перейти на главную страницу

Проблема перезаписи URL

Я пытаюсь переписать поддомен своего URL.

http: //имя пользователя.domain.com покажет содержимое http://www.domain.com/user.php?u=имя пользователя но URL остается как http: //имя пользователя.domain.com. (Я имею в виду маскировка URL)

(Имя пользователя может содержать буквы a-z 0-9 и дефисы) Также, если субдомен www или 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 Internal Server:

[Mon May 30 20:10:44 2011] [alert] [client 81.6.xx.xxx] /home/blablabla/public_html/.htaccess: AllowOverride not allowed here

(из журнала ошибок)

Мой сервер httpd.conf файл виртуальный хост настройки

<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 webmaster@DOMAIN.net
    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 как Запись.

Это должно сработать - вам нужен «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]

Если вы используете файл .htaccess, ваш сервер должен иметь направление AllowOverride для этих контекстов домена. Проверьте общую конфигурацию ваших серверов.

Также вам понадобится редирект для такого рода переписывания.

вместо: RewriteRule. * /user.php?u=%1 [L]

использование: RewriteRule. * http://www.domain.com/user.php?u=%1 [r, L]

После редактирования: перенаправление не требуется.