Я пытаюсь переписать поддомен своего 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]
После редактирования: перенаправление не требуется.