Нужна помощь с переписчиком URL-адресов .htaccess

Нужна помощь с переписчиком URL-адресов .htaccess

Я пытаюсь создать еще одну систему SEO с помощью PHP/.htaccess...

Мне необходимо применить следующие правила:

  1. Необходимо перехватывать все URL-адреса, которые не заканчиваются расширением (www.foo.com --> catch | www.foo.com/catch-me --> catch | www.foo.com/dont-catch.me --> don't catch).
  2. Необходимо перехватить все URL-адреса, заканчивающиеся на .php* (.php, .php4...) (которые являются исключениями из правила №1).
  3. Все правила должны применяться только в некоторых каталогах инетв их подкаталогах (пока что / и /framework).
  4. Htaccess должен отправлять введенный URL в значении GET, чтобы я мог работать с ним в PHP.

Может ли мне помочь какой-нибудь мастер по переписыванию модов?

Редактировать:

Хорошо, после прочтения предложенных постов я придумал это, но мне кажется, что это зациклено... Кто-нибудь может помочь?

<IfModule mod_rewrite.c>
RewriteEngine On
# 1
RewriteCond %{REQUEST_FILENAME} !\.[^/]+$ [OR]
# 2
RewriteCond %{REQUEST_FILENAME} \.php.*$
# 4
RewriteRule ^(.*)$ http://localhost/seo-urls/seo-urls-mapper.php%3Frequested=$1?%{QUERY_STRING}
</IfModule>

Поскольку я хочу завершить это во время рождественских каникул, я добавляю вознаграждение :) Спасибо за помощь и счастливых праздников!

решение1

Попробуйте это в качестве отправной точки:

RewriteEngine On

RewriteCond %{QUERY_STRING} !^uri
RewriteCond %{REQUEST_URI}  !\.(.*)
RewriteCond %{REQUEST_URI}  !^/(framework|restricted)/
RewriteRule .* /index.php?uri=%{REQUEST_URI} [L,QSA]

RewriteCond %{QUERY_STRING} !^uri
RewriteCond %{REQUEST_URI}  \.php.?$
RewriteRule .* /index.php?uri=%{REQUEST_URI} [L,QSA]

Первый набор правил:

  1. Не запускайте это правило, если uriустановлен параметр GET (иначе возникнет цикл при перенаправлении на целевой скрипт после добавления uriпараметра)
  2. Если URI содержит , .то пропустите этот набор правил (возможно, вы захотите создать более конкретное правило для определенных расширений, но это работает)
  3. Если URI находится в ограниченном каталоге, пропустите этот набор правил.
  4. Перенаправление index.php(возможно, вам придется изменить цель) и задать uriпараметр GET

Второй набор правил:

  1. Если uriпараметр установлен, пропустите этот набор правил, чтобы избежать зацикливания.
  2. Продолжайте, если запрошенный URI заканчивается на .php, .php4или на что-то подобное ( .php123будетнетбыть перенаправлены)
  3. Перенаправление index.php(возможно, вам придется изменить цель) и задать uriпараметр GET

Не нужно быть «волшебником», чтобы составить правила mod_rewrite — потратьте немного времени на самостоятельные эксперименты и прочтите руководство, рекомендованное jscott.

ДелатьЗадавайте все вопросы теоретического характера здесь, если вы хотите получить подробные объяснения (в отличие от практических вопросов, в которых создается впечатление, что отвечающие краудсорсингуют ваш проект, а не углубляют ваши знания).

Связанный контент