Перенаправить URL на пользовательский URL через .htaccess - PullRequest
2 голосов
/ 21 февраля 2012

У меня есть страница www.mypage.com, и я хочу перенаправить определенный URL на другой несуществующий URL.

Например, я хочу, чтобы www.mypage.com/about перенаправил на www.mypage.com/about-company.php,где / about не существует - это пользовательский URL, написанный мной.

У меня нет динамического URL, я хочу только через .htaccess сказать "this / CUSTOM_URL перенаправление на этот /URL.php".

В строке URL должен отображаться пользовательский URL .

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

Примером этого могут быть Постоянные ссылки Wordpress , где вы можете указать, какой URL вы хотите для каждой страницы.

Ответы [ 3 ]

3 голосов
/ 21 февраля 2012

Попробуйте добавить следующее в файл .htaccess в корневом каталоге вашего сайта, чтобы получить конкретный пример, который вы просили работать: получить доступ к www.mypage.com/about-company.php с помощью www.mypage.com/about.

RewriteEngine on
RewriteBase / 

#if about was requested, server about-company.php
RewriteRule ^about$ about-company.php [L,NC]

Если вам нужно более общее правило, например, www.mypage.com/anything используется для доступа к www.mypage.com/anything.php, вы можете заменить вышеприведенное правило на

RewriteRule ^(\w+)$ $1.php [L,NC]

Или вы можете иметь все запросы к одному файлу .php, который решает, чтостраница для отображения, например

RewriteRule ^(\w+)$ index.php?page=$1 [L,NC]
1 голос
/ 21 февраля 2012

Вы ищете правила перезаписи.

Некоторое прочтение: Правила переписывания Apache

0 голосов
/ 04 мая 2017

Опираясь на комментарий Ульриха Пальи, я обнаружил, что это работает для меня как файл .htaccess, предоставляя альтернативные перенаправления с маскированием для пары моих собственных страниц .php:

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule ^(optionOne$|optionOneWithEndingSlash/$|optionTwo$|etCetera/$) ppl/peaceseeker.php [L] [NC]
RewriteRule ^(donny$|donny/$|donnycallahan$|donnycallahan/$) ppl/donnycallahan.php [L] [NC]

(я упоминаю об этомпотому что решение Ульриха вызвало у меня проблему, когда люди набрали example.com/about/ (с косой чертой в конце)).

Спасибо, Ульрих.Если кто-нибудь знает, как изменить правило .php-суффикса Ульриха для рекурсивного перехода в любое количество каталогов, я был бы признателен за комментарий!

В качестве временного решения для всех, кому нужно спуститься в каталоги, это сработало для меня:

RewriteRule ^(\w+)$ $1.php [L,NC]
RewriteRule ^(\w+)/(\w+)$ $1/$2.php [L,NC]

Вторая команда будет обрабатывать первый подкаталог всех каталогов в корневой папке вашего каталога.Веб-сайт.

Вы можете обрабатывать 3 уровня подкаталогов, или 4, или 5, или 10, просто добавив несколько экземпляров «/ (\ w +)» перед $ (по одному на новый уровень подкаталогов), а затемдобавление / $ 3, / $ 3 / $ 4, / $ 3 / $ 4 / $ 5 или все, что необходимо непосредственно перед «.php» в правиле.Мне нужны были только 2 уровня каталогов (пока), так что я хорошо справляюсь с тем, что я написал;это решение достаточно простое.

Я все еще хотел бы рекурсивное решение, если это возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...