Вопрос по .htaccess, apache – Удалить косую черту

5

Я бы хотел работать со страницами без косой черты. Поэтому теперь я хочу, чтобы мои URL с косой чертой перенаправляли (используя .htaccess) на тот же URL без косой черты.

Я получил два файла .htaccess:

<IfModule mod_rewrite.c>
  RewriteEngine On

  RewriteRule (.*)  public/$1
</IfModule>

И один в моей общей папке:

DirectoryIndex index.html index.php
Options -Indexes

<IfModule mod_rewrite.c>
    RewriteEngine On        
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f         
    RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
</IfModule>

Я попытался добавить следующее правило в файл .htaccess в общей папке:

RewriteRule (.*)/$ $1 [R,L]

Но потом: example.com/public/page/view/2/

Перенаправляет на: example.com/**D:/webserver/**public/page/view/2

Что явно не то, что я хочу ...

Вы говорите, что косая черта является частью некоторой формальной / стандартной / стандартной записи. В этом случае у меня был похожий вопрос. Как я могу перенаправить, чтобы добавить косую черту ;-) Erik
Я не уверен, как решить вашу проблему, но я не уверен, действительно ли это то, что вам следует делать. Насколько я понимаю, запросить URL-адрес, как это:example.com/myDir фактически перенаправляет пользователя наexample.com/myDir, Этого дополнительного перенаправления можно избежать с помощью косой черты. Эта косая черта однозначно указывает на то, что «myDir» это каталог, а не файл. nikmd23
Поскольку вы на самом деле не пытаетесь перенаправить в каталог, косая черта не помогает вам вообще - фактически, она ничего не делает так или иначе. Вы должны просто делать то, что вам нравится, и быть последовательным в использовании. Fake51

Ваш Ответ

4   ответа
2

ение на public / $ 1? Возможно, вы столкнулись с переопределением директив RewriteRule, которые усложняют вам жизнь.

Не зная ваших настроек, довольно сложно сказать, как вы должны использовать переписывание. Можете ли вы указать, как на самом деле выглядят вещи?

Error: User Rate Limit Exceeded Erik
1

который вы можете использовать для решения вашей проблемы:

Trailing Slash Problem

Описание:

Каждый веб-мастер может спеть песню о проблеме косой черты в ссылках на каталоги. Если они отсутствуют, сервер выдает ошибку, потому что если вы говорите / ~ quux / foo вместо / ~ quux / foo /, то сервер ищет файл с именем foo. И поскольку этот файл является каталогом, он жалуется. На самом деле, он пытается исправить это сам в большинстве случаев, но иногда вам нужно подражать этому механизму. Например, после того, как вы сделали много сложных переписываний URL-адресов в сценарии CGI и т. Д.

Решение:

Решение этой тонкой проблемы - позволить серверу автоматически добавить завершающий слеш. Чтобы сделать это правильно, мы должны использовать внешнюю переадресацию, поэтому браузер правильно запрашивает последующие изображения и т. Д. Если бы мы только сделали внутреннюю перезапись, это работало бы только для страницы каталога, но работало бы неправильно, если какие-либо изображения включены в эту страницу с относительными URL-адресами, потому что браузер будет запрашивать встроенный объект. Например, запрос на image.gif в /~quux/foo/index.html станет /~quux/image.gif без внешнего перенаправления!

Итак, чтобы сделать этот трюк, мы пишем:

RewriteEngine  on
RewriteBase    /~quux/
RewriteRule    ^foo$  foo/  [R]

Сумасшедшие и ленивые могут даже сделать следующее в файле верхнего уровня .htaccess своего homedir. Но обратите внимание, что это создает некоторые накладные расходы обработки.

RewriteEngine  on
RewriteBase    /~quux/
RewriteCond    %{REQUEST_FILENAME}  -d
RewriteRule    ^(.+[^/])$ $1/ [R]

Источник

1

Вы пытались добавить:

RewriteBase /public

к.htaccess файл в общей папке, чтобы получить:

<IfModule mod_rewrite.c>
    RewriteEngine On            
    RewriteBase /public

    RewriteRule (.*)/$ $1 [R,L]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f         
    RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
</IfModule>
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Erik
Error: User Rate Limit Exceeded Erik
2

сылок. Так что любые изменения в .htaccess мало помогают, так как Wordpress добавит / удалит их для вас и выполнит wp_redirect () после того, как .htaccess сделает что-то. В худшем случае вы получите цикл перенаправления.

Решением является отключение перенаправления Wordpress с помощью.

// perhaps an if(is_something()) before here ...
add_filter('redirect_canonical', '__return_false');

Вы должны обернуть это внутри оператора if или такого, где вы выполняете проверку для определенной страницы / каталога / и т. Д. Помещение вышеупомянутого непосредственно в ваш файл функций отключит перенаправление WordPress и, возможно, сломает вещи.

Error: User Rate Limit Exceeded

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