Как написать файл .htaccess, чтобы получить все после слэша в качестве параметра?

1

У меня есть URL, то есть "www.mysite.com". Я хочу отправить параметры через url следующими способами:

www.mysite.com/count
www.mysite.com/search_caption?query=huha
www.mysite.com/page=1
www.mysite.com/search_caption?query=huha&page=1

В каждом из этих случаев я хочу загрузить страницу index.php с параметрами следующим образом для каждого случая:

var_dump($_REQUEST) results into [count]
var_dump($_REQUEST) results into [query="huha"]
var_dump($_REQUEST) results into [page=1]
var_dump($_REQUEST) results into [query="huha",page=1]

Как написать файл.htaccess для достижения этого?

Я использую этот код, но он захватывает только параметры после "?" и не все после первой косой черты

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule ^([^/]+)/?$ index.php?{REQUEST_FILENAME}=$1 [L,QSA]
RewriteRule .* /index.php [L]
  • 1
    Вы читали документацию? Почему нет? На ваш вопрос четко дан ответ: httpd.apache.org/docs/current/mod/mod_rewrite.html
  • 0
    Я читаю и пишу эту опцию , QSA] RewriteRule. * /Index.php [L], но он не работает
Показать ещё 8 комментариев
Теги:
.htaccess

1 ответ

2

Что-то вроде этого должно приблизиться, хотя вы действительно должны думать об этих странных шаблонах URL вместо того, чтобы пытаться их исправить после перезаписи...

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L,QSA]

RewriteRule ^count index.php?count=1 [L]

RewriteRule ^page/(.*)$ index.php?page=1 [L]

RewriteRule ^ index.php [L,QSA]

Некоторые примечания:

  • первые три RewriteRules являются исключениями, потому что ваши данные не соответствуют разумному и общему шаблону. Они кажутся несколько хаотично подобранными.
  • это, конечно, не освобождает от проблем, я не тестировал его, только набрал его.
  • это предполагает, что пример "страницы" запрашивается, как описано в комментариях.
  • index.php самом деле должен существовать как файл, иначе это приведет к циклу перезаписи

Учитывая все, что должно произойти:

www.mysite.com/count => index.php?count=1
www.mysite.com/search_caption?query=huha => index.php?query=huha
www.mysite.com/page/1 => index.php?page=1
www.mysite.com/search_caption?query=huha&page=1 => index.php?query=huha&page=1

Также обратите внимание, что приведенные выше правила написаны для файлов стиля .htaccess. Для использования в качестве обычных правил, поэтому в конфигурации хоста http-серверов они должны быть написаны немного иначе. Вы должны использовать только файлы стиля .htaccess если вам действительно нужно, поэтому, если у вас нет доступа к файлам конфигурации. Вы всегда должны стараться избегать этих файлов, если это возможно. Они, как известно, подвержены ошибкам, трудно настраивать и отлаживать и действительно замедлять работу сервера. Поэтому, если у вас есть доступ к конфигурации http-сервера, тогда вместо этого определяются такие правила.

  • 0
    Это сработало! большое Вам спасибо :)
  • 0
    Работает. как получить доступ к параметру $_GET ?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню