Как мне переписать URL? - PullRequest
       9

Как мне переписать URL?

0 голосов
/ 02 марта 2011

Может кто-нибудь сказать мне, как переписать этот URL.Я посмотрел на множество вопросов о stackoverflow, но они, похоже, не нашли мой ответ.

RewriteEngine On

Это то, что у меня есть ... немного бедно.

Мне нужноПерепишите URL, если они не указывают на каталог.

Мне нужно сделать это ...

any.domain.com / pages / some-page-slug / login

Для перезаписи на правильный URL-адрес ...

any.domain.com / pages / login.php? Page = 32

У кого-нибудь есть идеи, как этого достичь?

Ответы [ 3 ]

0 голосов
/ 02 марта 2011

Для этого вам нужно написать фронт-контроллер.

См. здесь , здесь , здесь и здесь .

В качестве альтернативы в Apache выможете переписать это

any.domain.com / pages / 32 / login

или это:

any.domain.com /32 / login

или даже это:

any.domain.com / some-slug / 32 / login

на это:

any.domain.com / pages / login.php? Page = 32

Так или иначе, чтобы сделать это только с Apache, вам нужно указать идентификатор страницыв некотором роде.Имейте в виду, что даже в формате any.domain.com/some-slug/32/login содержание слага не имеет значения и не обязательно ссылается на правильную страницу.То, что я считаю нежелательным и плохим для SEO.

Другая альтернатива использует RewriteMap .Но это будет непросто и потребует reload использования настроек apache при создании / редактировании страницы / слага.

0 голосов
/ 02 марта 2011

Я понимаю, что pages и login в этом случае статичны, а some-page-slug меняется. И вы всегда хотите перенаправить на статическую страницу /pages/login.php?page=32

Вот как это сделать:

1) Переписать

RewriteEngine On
RewriteRule ^pages/([a-zA-Z0-9_]+)/login(.*)$ /pages/login.php?page=32

или 2) Перенаправление Pernament

RewriteEngine On
RewriteRule ^pages/([a-zA-Z0-9_]+)/login(.*)$ /pages/login.php?page=32 [R=301,L]

или 3) Перенаправление Временное

RewriteEngine On
RewriteRule ^pages/([a-zA-Z0-9_]+)/login(.*)$ /pages/login.php?page=32 [R=302,L]

Вот отличная статья о трюках htaccess http://perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/

0 голосов
/ 02 марта 2011

1) Перезапись product.php? Id = 12 на product-12.html

Это простое перенаправление, в котором расширение .php скрыто от адресной строки браузера и динамического URL (содержащего «?»).символ) преобразуется в статический URL.

RewriteEngine on
RewriteRule ^product-([0-9]+)\.html$ product.php?id=$1

2) Перезапись product.php? id = 12 в product / ipod-nano / 12.html

Эксперт по SEO всегда предлагает отобразитьосновное ключевое слово в URL.В следующем методе перезаписи URL вы можете отобразить название продукта в URL.

RewriteEngine on
RewriteRule ^product/([a-zA-Z0-9_-]+)/([0-9]+)\.html$ product.php?id=$2

3) Перенаправление URL без www на URL www

Если вы наберете yahoo.com в браузере, этобудет перенаправлен на www.yahoo.com.Если вы хотите сделать то же самое с вашим сайтом, поместите следующий код в файл .htaccess.В чем выгода такого рода перенаправления ??Пожалуйста, проверьте сообщение о SEO-перенаправлении (301) в php и .htaccess.

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

4) Переписать yoursite.com/user.php?username=xyz на yoursite.com/xyz

Вы проверили zorpia.com. Если вы наберете http://zorpia.com/roshanbh233 в браузере, вы сможете увидеть мой профиль там.Если вы хотите выполнить такой же тип перенаправления, например, с http://yoursite.com/xyz на http://yoursite.com/user.php?username=xyz, то вы можете добавить следующий код в файл .htaccess.

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?username=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ user.php?username=$1

5) ПеренаправлениеПерейдите в новую подпапку внутри public_html.

Предположим, что вы перестроили свой сайт, и все новые разработки находятся в «новой» папке внутри корневой папки. После этого вы сможете получить доступ к новой разработке сайта.как «test.com/new».Теперь перемещение этих файлов в корневую папку может быть беспокойным процессом, поэтому вы можете создать следующий код внутри файла .htaccess и поместить его в корневую папку веб-сайта.В результате www.test.com указывает на файлы внутри «новой» папки.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^test\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.test\.com$
RewriteCond %{REQUEST_URI} !^/new/
RewriteRule (.*) /new/$1 
...