перенаправление htaccess - PullRequest
0 голосов
/ 28 марта 2009

Вот что я пытаюсь сделать с htaccess:

Код htaccess не должен содержать домен, на котором он будет использоваться.

Я пытался найти что-то подобное в сети целую вечность, но я нахожу только каждую часть, и они не работают вместе.

Может кто-нибудь помочь мне с этим?

Ответы [ 2 ]

2 голосов
/ 29 марта 2009

Хорошо, вот моя попытка. Обратите внимание, что руководство Apache довольно хорошо. Я отличаюсь от benlumley в разделе "сайт". Кроме того, вы можете заменить ([0-9]+) на (.+), если названия новостных статей не все числовые.

# Ensure that rewriting is enabled
RewriteEngine on

# First strip the www as benlumley did
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

# Then convert /site to /site/, reflecting the change in the address bar
RewriteRule ^([^/.]+)$ /$1/ [R=301,L]
# Finally map /site/ to /site.php
RewriteRule ^([^/.]+)/$ /$1.php

# Finally, fix download and news as benlumley did
RewriteRule ^download/(.+)$ /download.php?file=$1
RewriteRule ^news/article/([0-9]+)$ /news.php?article=$1

РЕДАКТИРОВАТЬ : исправлена ​​ошибка копирования / вставки для части "strip www".

ПРИМЕЧАНИЕ : Любые имеющиеся у вас теги <link href="..."> или <script src="..."> теперь необходимо указывать как абсолютные пути, поскольку вы фактически изменили каталог, из которого, как представляется, страница обслуживается.

например. рассмотрите следующую строку из вашего blog.php:

<link rel="stylesheet" type="text/css" href="style.css">

Ранее браузер видел http://site/blog.php и пытался получить http://site/style.css,, который работал.

Теперь, когда браузер вместо этого видит http://site/blog/, относительный URL выше интерпретируется как http://site/blog/style.css,, который не существует. Таким образом, href необходимо изменить следующим образом:

<link rel="stylesheet" type="text/css" href="/style.css">
2 голосов
/ 28 марта 2009

Просто написав это с моей головы, они могут иметь ошибки ... но думаю, что это правильно. Прокомментируйте, если есть ошибки, и я посмотрю.

Для бита www:

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Сайт бит:

RewriteRule ^([^/]*)$ /$1/ [R=301,L]
RewriteRule ^([^/]*/)$ /$1.php

Скачать:

RewriteRule ^download/(.+)$ /download.php?file=$1

Новости

RewriteRule ^news/article/([0-9]+)$ /news.php?article=$1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...