2011-09-12 3 views
0

Я кратко сообщу вам, что я делаю, и где мне понадобится ваша помощь.url переписать с htaccess

Я создаю сайт для размещения блога. Я закончил CMS, и теперь я делаю пользовательские страницы.

Моя идея состояла в том, чтобы создать правила .htaccess, чтобы каждый пользователь и владелец блога имели свой собственный URL-адрес блога: XXX.bloghost.com, где XXX - это имя блогов или имя владельца блога.

Просто сказать, что я буду использовать более 2 параметров в URL, так вот примеры URL-адресов:

XXX.bloghost.com -> www.bloghost.com/index.php?user=XXX 

XXX.bloghost.com/NEWS -> www.bloghost.com/index.php?user=XXX&category=NEWS 

XXX.bloghost.com/NEWS/SAMPLE -> www.bloghost.com/index.php?user=XXX&category=NEWS&post=SAMPLE 

Вот мой текущий файл .htaccess (ОБНОВЛЕНО):

Options +FollowSymLinks 
Options +Indexes 
RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} !www.bloghost.com$ [NC] 
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).bloghost.com [NC] 
RewriteRule (.*) %2/$1 [L] 

RewriteRule (.+)/(.+)/(.+) blog.php?blog_id=$1&category=$2&post=$3 [L,QSA] 
RewriteRule (.+)/(.+) blog.php?blog_id=$1&category=$2 [L,QSA] 
RewriteRule (.+) blog.php?blog_id=$1 [L,QSA] 


ErrorDocument 404 /error.php 

Я бы действительно нужна помощь с этим. Я пробовал и следил за несколькими учебниками по этому поводу, но не повезло.

Кроме того, может ли этот .htaccess блокировать или перенаправлять все ошибочные или не существующие URL-адреса на какую-либо страницу?

ответ

3

Сначала необходимо настроить вам поддоменов для шаблона

ServerAlias www.domain.com domain.com *.domain.com 

И убедитесь, что DNS настроен для групповых символов тоже. Чем использовать что-то вроде этого:

RewriteCond %{HTTP_HOST} !www.domain.com$ [NC] 
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+).domain.com [NC] 
RewriteRule (.*) %2/$1 [QSA] 

Таким образом, после этой страницы http://some.domain.com/news пойдет на http://www.domain.com/some/news И чем обрабатывать URL, как обычно (только для примера):

RewriteRule (.+)/(.+)/(.+) index.php?user=$1&category=$2&post=$3 [L,QSA] 
RewriteRule (.+)/(.+) index.php?user=$1&category=$2 [L,QSA] 
// and so on 

Но я думаю, что вторая часть должна обрабатываться с помощью системы маршрутизации php.

+0

Спасибо Атм, я постараюсь это позже и пост результаты здесь ... ура m8 – Ivan

+0

я просто попробовал ваше предложение приемлема, но не повезло www.bloghost.com/XXX/NEWS работает URL-адрес как шарм, но URL-адрес, такой как XXX.bloghost.com, дает мне ошибку «сервер не найден». Это мой файл .htaccess: (. WWW) Options + FollowSymLinks Options + Indexes RewriteEngine On RewriteBase/ RewriteCond% {HTTP_HOST} www.otvorko.net $ [NC] RewriteCond% {HTTP_HOST} ^? ([a-z0-9 -] +). otvorko.net [NC] RewriteRule (. *)% 2/$ 1 [L] RewriteRule (. +)/(. +)/(. +) блог. php? blog_id = $ 1 & category = $ 2 & post = $ 3 [L, QSA] RewriteRule (. +)/(. +) blog.php? blog_id = $ 1 & category = $ 2 [L, QSA] Блог RewriteRule (. +). php? blog_id = $ 1 [L, QSA] – Ivan

+0

Вы правильно настроили DNS и веб-сервер (Apache) для шаблона? 'ServerAlias ​​www.otvorko.net dotvorko.net * .otvorko.net' для apache и что-то вроде' * .otvorko.net A 111.222.33.44' в записи домена dns? – atma

0

@atma уже обрабатывает реальное перенаправление. Просто быстрое дополнение для обработки ошибок в .htaccess:

ErrorDocument 404 /error.php 

Легко! Любая ошибка 404 будет направлена ​​на bloghost.com/error.php. Замените свой путь и страницу/скрипт на наличие ошибок.

Смежные вопросы