.htaccess & WordPress: исключить папку из RewriteRule - PullRequest
21 голосов
/ 24 февраля 2010

У меня есть этот файл .htaccess в WordPress.Он находится в / public_html / (веб-корень).Мне нужно исключить папку (csNewsAd) из механизма перезаписи.Я попробовал это, основываясь на другом вопросе, подобном здесь, в SO, но не работал вообще.

<code>AddHandler x-httpd-php5 .php
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^/csNewsAd($|/) - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Есть предложения?

Больше данных

В / csNewsAd есть еще один .htaccess для защиты паролем:

<code>
AuthName "Clasificados"
AuthType "basic"
AuthUserFile /home/ig000192/public_html/csNewsAd/.passwd
Require valid-user

Ответы [ 15 ]

42 голосов
/ 28 февраля 2010
RewriteCond %{REQUEST_URI} !^/(csNewsAd|csNewsAd/.*)$ 

вместо

RewriteRule ^/csNewsAd($|/) - [L] 
18 голосов
/ 01 июля 2013

Поместите строку ниже в файл .htaccess в корне.

ErrorDocument 401 default

У меня точно такая же проблема, и это сработало для меня. Проблема не в том, что перенаправления не работают. Проблема в том, что ошибка 401 (требуется авторизация) не определена, поэтому всплывающее окно не отображается.

5 голосов
/ 11 мая 2012

У меня возникла та же проблема, и я нашел ответ на мою проблему здесь: http://kb.siteground.com/article/How_to_exclude_a_folder_from_Wordpress_permalinks.html

- с сайта

Чтобы исключить подпапки из правил переписывания WordPress, необходимо отредактировать файл .htaccess и изменить жирную строку ниже:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# RewriteRule . /index.php [L] # Original line
RewriteRule ./ /index.php [L] # New line
</IfModule>
# END WordPress
3 голосов
/ 24 февраля 2010

.htaccess влияет на все каталоги внизу, поэтому, если вы поместите .htaccess в csNewsAd с нужными вам директивами перезаписи, он будет иметь приоритет над корневым файлом.

2 голосов
/ 26 февраля 2010

Если вы используете mod_rewrite в файле .htaccess, вам просто нужно указать путь URL без префикса локального пути в ваших шаблонах. В вашем случае без начального / (как вы находитесь в корне документа /):

RewriteRule ^csNewsAd($|/) - [L]
1 голос
/ 14 октября 2018

Это результат № 1 в Google и неправильный ответ.

Правильный ответ добавляет это перед директивами Wordpress.

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} ^/subdirectoryname1/(.*)$ [OR]
    RewriteCond %{REQUEST_URI} ^/subdirectoryname2/(.*)$ [OR]
    RewriteRule ^.*$ - [L]
</IfModule>
1 голос
/ 09 сентября 2016

Вот мое решение в отношении сайта GoDaddy WordPress. В моей установке был файл web.config, поэтому я добавил правило перезаписи. Я хотел / ApiData путь, где я мог бы запустить приложение MVC.net (виртуальный каталог) для вызовов AJAX.

<system.webServer>
    <!-- ... -->
    <rewrite>
        <rules>
            <rule name="apidata" stopProcessing="true">
                <match url="apidata"/>
            </rule>
            <rule name="wordpress" patternSyntax="Wildcard">
                <match url="*"/>
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
                </conditions>
                <action type="Rewrite" url="index.php"/>
            </rule>

        </rules>
    </rewrite>
</system.webServer>
1 голос
/ 09 августа 2015

У меня есть хостинг GoDaddy, и эта проблема убила меня. У меня возникали одни и те же проблемы снова и снова с конфликтующими опциями .htaccess в public_html, с моим защищенным паролем подкаталогом.

Я закончил тем, что купил другую учетную запись, потому что я попробовал около миллиона различных модификаций в моем файле .htaccess, и ничто не обошло эту проблему. Сейчас я делюсь своими настройками и решением, просто для полноты и ясности. (Точно так же, как вы знаете, учетная запись стоила того, так что не важно.)

Если это выглядит как комбинация ответов других, это потому, что это так. Все это потребовалось, чтобы работать.

Структура каталогов:

-otherfiles
---public_html
---.htaccess
-----subfolder
---.htaccess

В подпапке .htaccess есть функция защиты паролем, похожая на эту:

AuthType Basic
AuthName "Attendance"
AuthUserFile "/home/user/.htpasswds/public_html/attendance/passwd"
require valid-user

У public_html .htaccess изначально было это, и оно не работало (то есть глотало ВСЕ и перенаправляло его, так что FatFreeFramework или CodeIgniter обрабатывали его):

RewriteEngine On
RewriteCond $1 !^(index.php|resources|subfolder|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]

Чтобы исправить эту проблему, я добавил две строки в свой файл public_html .htaccess. И поэтому вы не угадаете, где я снова покажу весь файл:

RewriteEngine On
RewriteCond $1 !^(index.php|resources|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} !^/(subfolder|subfolder/.*)$
ErrorDocument 401 default
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
1 голос
/ 21 февраля 2012

Я впервые начал делать это с Rails.В верхней части рельсов .htaccess находятся следующие две строки.

# RewriteCond %{REQUEST_URI} ^/notrails.*
# RewriteRule .* – [L]

Когда я наконец последовал их примеру, это сработало.

Я хотел исключить изображения, JavaScript, таблицы стилей, CSS,images-global, js-global (и т. д.), поэтому я изменил вышеприведенное на.

RewriteCond %{REQUEST_URI} ^(images|javascripts|stylesheets|css|images-globa|js-global|js).*
RewriteRule .* – [L]

И это сработало так, как мне нужно.

Мы не будем говорить о том, как это происходит.У меня так много разных папок JavaScript, таблиц стилей и изображений….

Но это делает мой файл ошибок менее болезненным.Если кто-то добавляет файл изображения, который не существует, моя отправка не должна его обрабатывать.

0 голосов
/ 16 февраля 2019

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

<IfModule mod_rewrite.c>
  RewriteEngine on

  # stuff to let through (ignore)
  RewriteCond %{REQUEST_URI} "/folder1/" 
  RewriteRule (.*) $1 [L]

получено из https://www.drupal.org/node/30334

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