Использование .htaccess, чтобы скрыть местоположение и расширение .php файла

Я пытаюсь отправить все запросы на // my.domain / download? Id = xx (будь то http или https) обрабатываться с помощью /path/to/my/download.php?id=xx .

Я пробовал все виды правил RewriteRule , но безрезультатно, так что нет смысла публиковать что-либо, что у меня есть, но это установка Wordpress , поэтому это не должно противоречить существующим правилам WP, а именно:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Я был бы очень признателен за объяснение любого предоставил ответ. Спасибо!

ИЗМЕНИТЬ

Я уже просмотрел Перенаправление, изменение URL-адресов или перенаправление HTTP на HTTPS в Apache - все, что вы когда-либо хотели знать о правилах Mod_Rewrite, но боялись спросить и могу Я даже не могу сказать, в каком разделе описана эта ситуация, поскольку все это слишком общее. Мне нужна помощь в этой конкретной ситуации.

ИЗМЕНИТЬ 2

Это код, который дает сбой, с 404, даже если https://htaccess.madewithlove.be/ говорит все должно быть хорошо:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^download
RewriteRule ^download(.*)$ wp-content/themes/XXX/inc/download.php$1

РЕДАКТИРОВАТЬ 3 У меня были не связанные с этим проблемы. Для всех, кто интересуется, см. Мой ответ ниже, чтобы узнать о сработавших правилах.

1
задан 21 November 2019 в 22:15
2 ответа

я пытаюсь иметь все запросы, идущие в //my.domain/download?id=xx (быть этим http или https) быть обработанным /path/to/my/download.php?id=xx.

Для этого Вы, вероятно, хотите к [1 116], внутренне переписывают URL, а не внешне перенаправляют запрос, как в Вашем существующем ответе. Внутреннее переписывает, не изменит URL в строке поиска браузера.

директивы в Вашем существующем ответе могут также быть упрощены.

Попытка следующее вместо этого, прежде существующие директивы WordPress, чтобы к [1 118] переписывают любой запрос на /download?id=N к /path/to/my/download.php?id=N, где N 1 или более цифр.

RewriteCond %{QUERY_STRING} ^id=\d+$
RewriteRule ^download$ path/to/my/download.php [L]

\d краткий класс символов, который соответствует любой цифре. То же как [0-9]. + квантор соответствует 1 или более цифры , таким образом, это перестанет работать (404), если id= (без значения) будет включен в строку запроса. Возвратитесь к [1 110], если id= должно быть успешным. Нет никакой потребности к [1 120] получение это значение (т.е. окружите шаблон в круглых скобках как в [1 112], так как Вы не используете это в замена .

строка запроса, т.е. id=N копируется до замена по умолчанию.

нет никакой потребности повториться RewriteEngine On директива, так как это уже - часть блока кода WordPress.

1
ответ дан 3 December 2019 в 22:58

Это - код, который получил то, что спросили, работая:

RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/download$
RewriteCond %{QUERY_STRING} ^id=([0-9]*)$
RewriteRule ^download(.*)$ path/to/my/download.php$1 [L,R]
0
ответ дан 3 December 2019 в 22:58

Теги

Похожие вопросы