У меня есть следующее .htaccess
в подкаталоге:
RewriteEngine on
RewriteRule ^file.js$ file.php
Каталог, содержа вышеупомянутое и другие файлы похож на это:
dir/
├── index.html
└── js
├── file.php
└── .htaccess
Я хочу мой file.js
быть внутренне перенаправленным к file.php
.
Когда я имею dir
под /var/www/html/
, и мой vhost
определение, бывшее похожее на это:
DocumentRoot /var/www/html
<Directory "/var/www/html">
AllowOverride All
Require all granted
</Directory>
#Alias /dir "/tmp/dir"
#<Directory "/tmp">
# AllowOverride All
# Require all granted
#</Directory>
работает!
Однако, когда я перемещаюсь dir
кому: /tmp/
и изменение vhost
быть похожими на это:
DocumentRoot /var/www/html
#<Directory "/var/www/html">
# AllowOverride All
# Require all granted
#</Directory>
Alias /dir "/tmp/dir"
<Directory "/tmp">
AllowOverride All
Require all granted
</Directory>
перенаправление больше не работает, хотя я все еще могу получить доступ к другим файлам такой как index.html
.
Журналы показывают мне, что переписывание предварительно ожидает DocumentRoot
к полному пути моего file.php
и таким образом давая мне Файл не существует сообщение
Вопрос:
Как я пишу .htaccess, который является агностиком туда, где он помещается и просто делает внутреннее перенаправление от одного определенного файла до другого?
Следует иметь в виду это, в то время как я могу изменить основное vhost
сконфигурируйтесь для контакта с этой проблемой, моя цель состоит в том, чтобы сделать это использование только .htaccess
.
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www/example.com/
Alias /scripts/ /var/www/scripts/
RewriteEngine on
RewriteRule ^file.js$ file.php
</VirtualHost>
Если вы не являетесь системным администратором и не имеете доступа к вашему конфигурационному файлу Apache, ну, ваш вопрос не был бы по теме , но, помимо этого, вы могли бы решить проблему, создав (скопировать) .htaccess
файл в каталоге, содержащем file.js
. В зависимости от директивы AllowOverride
настоящего администратора, настроенного для вас, вам обычно разрешается размещать .htaccess файл в любом каталоге и подкаталоге, к которому у Apache есть доступ. Вы не ограничены только DocumentRoot.