Я пытаюсь отправить все запросы на // 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 У меня были не связанные с этим проблемы. Для всех, кто интересуется, см. Мой ответ ниже, чтобы узнать о сработавших правилах.
я пытаюсь иметь все запросы, идущие в
//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.
Это - код, который получил то, что спросили, работая:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/download$
RewriteCond %{QUERY_STRING} ^id=([0-9]*)$
RewriteRule ^download(.*)$ path/to/my/download.php$1 [L,R]