Htaccess rewriteRule, если ни одно из указанных выше условий не соответствует

1

У меня есть следующий htaccess, и я пытаюсь переписать все URL-адреса, которые не соответствуют ни одному из правил.

Options -Indexes
Options +FollowSymLinks
RewriteEngine On

# —————— rule1 ——————
RewriteCond %{REQUEST_URI} ^(.*)/learn/(why|about)$
RewriteRule ^(.*)/(.*)$ ./index.php?page=$2 [L,QSA]

# —————— rule2 ——————
RewriteCond %{REQUEST_URI} ^(.*)/profile/edit$
RewriteRule ^(.*)$ ./index.php?page=profile [L,QSA]

# —————— rule3 ——————
RewriteCond %{REQUEST_URI} ^(.*)/users/(.*)$
RewriteRule ^(.*)/(.*)$ ./index.php?page=user&userUrl=$2 [L,QSA]

Что бы я хотел, это что-то вроде этого

RewriteCond %{REQUEST_URI} ^(.*)$
RewriteRule ^(.*)$ ./index.php?page=404 [L,QSA]

но он, похоже, не работает. Любой способ добиться этого? Благодарю.

Теги:
.htaccess
mod-rewrite
url-rewriting

1 ответ

1
Лучший ответ

Последнее правило catch-all будет следующим:

DirectoryIndex index.php
Options +FollowSymLinks -Indexes
RewriteEngine On

# —————— rule1 ——————
RewriteCond %{REQUEST_URI} ^(.*)/learn/(why|about)$
RewriteRule ^(.*)/(.*)$ index.php?page=$2 [L,QSA]

# —————— rule2 ——————
RewriteCond %{REQUEST_URI} ^(.*)/profile/edit$
RewriteRule ^(.*)$ index.php?page=profile [L,QSA]

# —————— rule3 ——————
RewriteCond %{REQUEST_URI} ^(.*)/users/(.*)$
RewriteRule ^(.*)/(.*)$ index.php?page=user&userUrl=$2 [L,QSA]

# —————— rule4 ——————
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php?page=404 [L,QSA]
  • 0
    Благодарю. Похоже, что он, к сожалению, перенаправляет 127.0.0.1/ (ничего после localhost в URL). Что я могу с этим поделать?
  • 0
    localhost / folder_I_work_on / который перед новым условием перейдет в localhost / folder_I_work_on / index.php
Показать ещё 3 комментария

Ещё вопросы

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