мод переписать чистый URL для окна поиска - PullRequest
0 голосов
/ 08 февраля 2012

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

Это делается в httpd.conf, так как я использую apache на windows

У меня есть установка

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   Options +Indexes
   RewriteEngine On
   RewriteCond %{SCRIPT_FILENAME} !-d
   RewriteRule ^([^\.]+)$ $1.html [NC,L]
</IfModule>

и это domain.com/bookings.html

отображается как domain.com/bookings

Я включил php в html-файлах, поэтому он анализирует все страницы для php

Но теперь я разместил окно поиска на своем сайте, и если я буду искать «музыку», он будет использовать URL:

domain.com/search?q=music

Я бы хотел, чтобы мои URL выглядели так:

domain.com/search/music

Но я также хотел бы иметь возможность набирать

domain.com/search/abba

И он загрузит страницу «search.html», назовем ее «поиск» и добавит параметр? Q =abba, но тогда все равно будет выглядеть как приведенный выше пример в строке URL

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

Спасибо зааванс за любую помощь, которую я получаю:)

Ответы [ 2 ]

0 голосов
/ 08 февраля 2012

Вы можете просто добавить одну простую RewriteRule:

RewriteRule ^/search/([a-zA-Z0-9]+)$ /search?q=$1 [QSA,NC,L]

Итак, всего:

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   Options +Indexes
   RewriteEngine On
   RewriteCond %{SCRIPT_FILENAME} !-d
   RewriteRule ^([^\.]+)$ $1.html [NC,L]
   RewriteRule ^/search/([a-zA-Z0-9]+)$ /search?q=$1 [QSA,NC,L]
</IfModule>

Да, кстати:

  • Вот вики serverfault.com
  • Официальное руководство htaccess по
  • Официальное руководство по mod_rewrite

А если этого недостаточно:

Два совета:

Если вы не в размещенной среде (= если это ваш собственный сервер и , вы можете изменить виртуальные хосты (не только файлы .htaccess), попробуйте использовать директиву RewriteLog: она поможет вам отследить такие проблемы:

# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On

Мой любимый инструмент для проверки регулярных выражений:

http://www.quanetic.com/Regex (не забудьте выбрать ereg (POSIX) вместо preg (PCRE)!)

0 голосов
/ 08 февраля 2012

используйте вид URL в вашем html: domain.com/search/music

добавьте это в ваш .htaccess файл в вашем DocumentRoot.

Options +FollowSymLinks +Indexes -MultiViews
RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_URI} (search)/([\w\d]+) [NC]
RewriteRule ^ %1.html?q=%2 [L,QSA]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]

или добавьте это в .conf файл

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   Options +Indexes
   RewriteEngine On

    RewriteCond %{REQUEST_URI} (search)/([\w\d]+) [NC]
    RewriteRule ^ %1.html?q=%2 [L,QSA]

    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteCond %{SCRIPT_FILENAME} !-f
    RewriteRule ^([^\.]+)$ $1.html [NC,L]
</IfModule>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...