Apache2 RewriteRule не работает

Я ранее настраивал свой apache2 следующим образом:

<VirtualHost _default_:443>
    ...
    RewriteEngine on
    RewriteCond %{HTTPS}  !=on
    RewriteRule "^/?(.*)" "https://%{SERVER_NAME}/$1"    # HTTPS auto redirect
    RewriteRule "^/example/?$" "/example.json"
    ...

Когда я открываю example.com / example или example.com/example/ показывает содержимое example.com/example.json .

Затем я установил другое программное обеспечение, и оно требует доступ к / software / web для главной веб-страницы, а каталоги, кроме web , не должны быть открыты для публики. Итак, я пишу это:

# DocumentRoot is /var/www/html
<Directory /var/www/html/software/>
    Require all denied
    AllowOverride All
</Directory>

<Directory /var/www/html/software/web/>
    Require all granted
    AllowOverride All
</Directory>

Он работает при доступе к example.com/software/web . Я хочу переписать ссылку, чтобы опустить часть / web (поэтому я могу просто ввести example.com/software ), поэтому я попытался добавить это:

RewriteRule "^/software/?$" "/software/web"

Однако, когда я попытался получить доступ к сокращенному URL-адресу, он выдает ошибку 403:

You don't have permission to access /software/ on this server.

Я попытался добавить завершающую косую черту следующим образом:

RewriteRule "^/software/?$" "/software/web/"

Затем он говорит

You don't have permission to access /software/app.php on this server.

Я пробовал несколько настроек регулярного выражения, но безуспешно. Как заставить работать? Любая помощь приветствуется.

0
задан 24 March 2019 в 05:55
1 ответ

Похоже, что где-то в вашей конфигурации есть другой RewriteRule, который переписывает /software/ на /software/app.php. Так как /software/app.php не соответствует написанному вами регексу, он никогда не будет применен.

Вы, вероятно, захотите перенести эту перезапись ранее в вашу конфигурацию, перед той, которая добавляет app.php. Вы также можете добавить флаг [L] после перезаписи, если вы не хотите, чтобы после /web/ применялись новые перезаписи.

.
0
ответ дан 5 December 2019 в 03:39

Теги

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