RewriteRule не работает с данным параметром - PullRequest
0 голосов
/ 02 июля 2019

Я провел некоторое исследование и провел последние 2 дня, пытаясь заставить мой .htaccess работать без успеха, и я не могу полностью понять, как действительно работает .htaccess.

Это URL, который я пытаюсь переписать, используя GET в моих .php файлах:

http://localhost/BDsite/tables/table.php?table=Energy

и я хочу, чтобы это было так:

http://localhost/BDsite/tables/Energy

Хорошо, вот как пишется мой .htaccess, и он находится внутри папки сайта, которая / BDsite

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^BDsite/tables/([^/]*)$ /BDsite/tables/table.php?table=$1 [L]
</IfModule>

К сожалению, с моим URL ничего не происходит.

1 Ответ

1 голос
/ 03 июля 2019

В отличие от перезаписей на сервер, можно выполнять перезапись внутри разделов или файлов .htaccess за счет некоторой дополнительной сложности. Этот метод называется перезаписью для каждого каталога.

Основное отличие от перезаписей на сервер состоит в том, что префикс пути к каталогу, содержащему файл .htaccess, равен stripped перед сопоставлением в RewriteRule.

A RewriteBase должен использоваться для обеспечения правильного отображения запроса.

(источник: apache.org - переписать вступительные файлы .htaccess )

Итак, используя структуру каталогов и добавив необходимые RewriteBase, вы получите следующее, что должно работать:

.htaccess файл в корневой папке (BDsite)

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On

RewriteBase /BDsite/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^tables/([^/]*)$ tables/table.php?table=$1 [L]
</IfModule>

Структура проекта:

enter image description here

Так что теперь, если вы запросите: localhost/BDsite/tables/energy,

вас обслужат localhost/BDsite/tables/table.php?table=energy (проверьте это с помощью var_dump-ing $ _GET в файле table.php)

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