Можно ли использовать .htaccess для отправки шестизначных URL-адресов в сценарий, но обрабатывать все другие недействительные URL-адреса как 404? - PullRequest
3 голосов
/ 16 сентября 2008

Можно ли использовать .htaccess для обработки всех шестизначных URL-адресов, отправляя их в сценарий, но обрабатывать каждый другой недействительный URL-адрес как ошибку 404?

Например:

http://mywebsite.com/132483

будет отправлено на:

http://mywebsite.com/scriptname.php?no=132483

но

http://mywebsite.com/132483a or
http://mywebsite.com/asdf

будет обработан как ошибка 404.

В настоящее время у меня это работает с помощью специального скрипта PHP 404, но это немного глупо. Мне кажется, что .htaccess может быть более элегантным решением, но я не смог понять, возможно ли это.

Ответы [ 3 ]

11 голосов
/ 16 сентября 2008

В вашем файле htaccess вставьте следующее

RewriteEngine On
RewriteRule ^([0-9]{6})$ /scriptname.php?no=$1 [L]

Первая строка включает движок mod_rewrite. Скобки () помещают содержимое в $ 1 - подряд () заполняет $ 2, $ 3 ... и так далее. [0-9] {6} говорит, что ищите строку длиной 6 символов, содержащую только символы 0-9.

[L] в конце делает это последним правилом - если оно применяется, обработка правила останавливается.

О, ^ и $ отмечают начало и конец входящего URI.

Надеюсь, это поможет!

4 голосов
/ 16 сентября 2008
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule ^([0-9]{6})$ scriptname.php?no=$1 [L]
</IfModule>

Для сохранения чистого URL

http://mywebsite.com/132483

при обслуживании scriptname.php используйте только [L]. Использование [R = 301] перенаправит вас на ваш scriptname.php? No = xxx

Вы можете найти это полезным http://www.addedbytes.com/download/mod_rewrite-cheat-sheet-v2/pdf/

0 голосов
/ 16 сентября 2008

Да, это возможно с mod_rewrite. В Интернете есть множество хороших учебников по mod_rewrite, быстрый поиск в Google должен быстро найти ваш ответ.

По сути, вам нужно убедиться, что используемое вами регулярное выражение просто ищет цифры, а не другие символы, и что длина равна 6. Затем вы будете перенаправлены на scriptname.?no= число, которое вы захватили.

Надеюсь, это поможет!

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