Как я удаляю запаздывание наклонных черт с URL при использовании индексного файла каталога Apache по умолчанию?

Мое предположение является Вашей производительностью, не масштабируется с Вашей стоимостью и усилиями. Мой пищеварительный тракт говорит мне, что можно быть ОЧЕНЬ более обеспечены с дополнительными серверами, упакованными полный RAM, если можно разделить кэш данных способом, который имеет смысл.

SSD обладает преимуществом почти нулевой задержки (сравнительно) в получении данных, но различные шины, которые соединяют его с оперативной памятью или сетью, собираются замедлить его значительно.

7
задан 9 February 2015 в 01:40
6 ответов

Вы могли всегда использовать mod_rewrite для перенаправления имени каталога без запаздывающей наклонной черты к dirname/index.html. Вы могли использовать RedirectConds, чтобы удостовериться, что перенаправление не становится сделанным, если URL заканчивается запаздывающей наклонной чертой или .html, и что это только применяется конкретно к URL сообщения в блоге.

Позвольте мне сделать на скорую руку пример, это займет некоторое время.

# Trailing slashes and .html suffix
RewriteCond !/$
RewriteCond !\.html$

# Check if it's actually a dir and if index.html exists
RewriteCond %{REQUEST_URI} -d
RewriteCond %{REQUEST_URI}/index.html -f

# Rewrite anything that gets through (Probably insecure, but you get the idea)
RewriteRule ^(.*)$ $1/index.html

Править: Может также быть объединен с решением Matt добавления кода ошибки перенаправления к RewriteRule. Это должно, вероятно, также быть сделано последним RedirectRule. Обратитесь к mod_rewrite документации для больше.

6
ответ дан 2 December 2019 в 23:14

Apache Переписывает Руководство, имеет главу по "Запаздыванию проблемы Наклонной черты" (прокрутите немного вниз), объяснение, как решить проблему с запаздывающими наклонными чертами в целом.

Однако они также заявляют, что запаздывающая наклонная черта требуется для каталогов, когда представленная страница в ней использует ресурсы (изображения, таблицы стилей..) с относительными ссылками - который не будет работать без наклонной черты:

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

12
ответ дан 2 December 2019 в 23:14

Удаление index.php от URL может быть сделано путем записи только двух строк в .htaccess (mod_rewrite в Apache) файл. Прежде, чем записать правила в .htaccess, удостоверьтесь, что mod_rewrite включен (RewriteEngine На) в Вашем сервере Apache. По всей вероятности mod_rewrite включен в сервере Linux, но для Windows Server Вы, возможно, должны были бы связаться с людьми хостинга для включения mod_rewrite. Можно проверить это путем взгляда в phpinfo ().

Ниже правила, которые удалят index.php из URL:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /([^/]+/)*index.php HTTP/ 
RewriteRule ^(([^/]+/)*)index.php$ http://www.%{HTTP_HOST}/ [R=301,NS,L]

Перенаправление 301 означает "Перемещенный Постоянно", таким образом, большинство поисковых систем удалит index.php из URL.

2
ответ дан 2 December 2019 в 23:14

Вы читали определение DirectorySlash?

DirectorySlash директива определяет, ли mod_dir если fixup URL, указывающие на каталог или нет.

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

  • Пользователь наконец запрашивает канонический URL ресурса
  • mod_autoindex работы правильно. Так как это не испускает путь в ссылке, это указало бы на неправильный путь.
  • DirectoryIndex будет оценен только для каталогов, которые требуют с запаздывающей наклонной чертой.
  • Относительные ссылки URL в страницах HTML будут работать правильно.

Ну, если Вы не хотите этот эффект, и причины выше не относятся к Вам, можно выключить перенаправление с:

# see security warning below!
<Location /some/path>
DirectorySlash Off
SetHandler some-handler
</Location>
2
ответ дан 2 December 2019 в 23:14

Вы могли бы хотеть попробовать Псевдоним: http://httpd.apache.org/docs/2.0/mod/mod_alias.html

0
ответ дан 2 December 2019 в 23:14

У меня была та же проблема, но я использовал mod_alias для настройки дочернего сайта. Оказывается, мне нужно было сделать второй псевдоним без косой черты, чтобы он работал правильно. Выглядело это примерно так:

Alias /forum/ "/var/www/forum"
Alias /forum "/var/www/forum"

<Directory "/var/www/forum">
    Options FollowSymlinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

В Ubuntu мне пришлось отредактировать файл /etc/apache2/mods-enabled/alias.conf с этими строками, а затем перезапустить apache. Не удалось найти этот ответ в Интернете; Я просто наткнулся на это сам, так как mod_rewrite не работал, и команда DirectorySlash тоже не помогла. Я добавлял программу, не относящуюся к Drupal, в качестве подсайта при установке Drupal, что и положило начало всему этому безумию ...

1
ответ дан 2 December 2019 в 23:14

Теги

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