2013-12-02 3 views
3

Мы меняем наше доменное имя, и оно предназначено для автономных приложений. В Apache виртуальный хост-файл DocumentRoot является/вар/WWW/сайт/html, а не/вар/WWW/пример/HTML, как в этом блоке:apache htaccess переписать с псевдонимом

Alias /apps/dept /var/www/example/html/apps/dept 
<Directory "/var/www/example/html/apps/dept/"> 
    Options FollowSymLinks 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
</Directory> 

Я положил файл .htaccess в каталоге/вар/WWW/пример/HTML/приложения/каталога отдела следующим образом:

RewriteEngine On 
RewriteBase /apps/dept/ 
RewriteCond %{HTTP_HOST} ^example.orgname.state.tx.us/apps/dept [NC] 
RewriteRule ^(.*)$ http://example.orgname.texas.gov/apps/dept/$1 [L,R=301] 

Это, кажется, следует, что рекомендуется здесь, http://httpd.apache.org/docs/current/mod/mod_rewrite.html и Apache : How to Use Rewrite Engine Inside Alias. Я не вижу результатов. Новый домен также имеет конфигурацию virutal host в файле VH. Эта же базовая переработка работает на нашем веб-сайте Drupal, который не использует псевдоним. Какие изменения могут потребоваться, чтобы имя домена было перезаписано с добавленным именем приложения? Неправильно ли RewriteBase?

Thx.

ответ

2

Таким образом, вы только хотите, чтобы перенаправить /apps/dept/, правильно? Это должно сработать. Поместите его как .htaccess или в конфигурацию Apache для example.orgname.state.tx.us, и все должно работать как ожидалось.

RewriteEngine on 
RewriteRule ^/apps/dept/(.*)$ http://example.orgname.texas.gov/apps/dept/$1 [NC,L,R=301] 

Итак, любые запросы, перейдя по этой URL

http://example.orgname.state.tx.us/apps/dept/ 

теперь пойдет по следующему адресу:

http://example.orgname.texas.gov/apps/dept/ 

и любые параметры запроса справа от URL будет передан вместе.

EDIT Просто перечитайте, что вы написали здесь:

Я положил файл .htaccess в каталоге/вар/WWW/пример каталога/html/приложения/отдел следующим образом.

The .htaccess я описал выше, должны быть помещены в /var/www/example/html/, а не в подкаталоге /apps/dept.

Но если вы хотите такое же поведение от .htaccess помещается в /apps/dept затем использовать это:

RewriteEngine on 
RewriteRule ^(.*)$ http://example.orgname.texas.gov/apps/dept/$1 [NC,L,R=301] 

Таким образом, любой запрос сделан из /apps/dept будет к в example.orgname.texas.gov/apps/dept/ включая подкаталоги из /apps/dept, таких как /apps/dept/test_app1, /apps/dept/test_app2 или /apps/dept/test_app3 ,

Или, возможно, попробуйте следующее:

RewriteEngine on 
RewriteRule (.*)$ http://example.orgname.texas.gov/apps/dept/$1 [NC,L,R=301] 

Примечание Я удалил ^, который заставит RewriteRule соответствовать начало URL.

+0

Я хотел бы перенаправить приложения, которые находятся в каталогах под каталогом/apps/dept /. – edroms

+0

Когда вы имеете в виду «ниже», что вы имеете в виду? Он перенаправляет что-либо из 'http: // example.orgname.state.tx.us/apps/dept /' в 'http: // example.orgname.texas.gov/apps/dept /', включая каталоги, содержащиеся в этом каталоге , Пожалуйста, уточните вопрос, если я не понимаю. – JakeGould

+0

Надеемся включить эти каталоги: http://example.on.state.tx.us/apps/dept/myapp/ на http://example.on.texas.gov/apps/dept/myapp. В отделе находится около 10 приложений. – edroms

0

Вы не можете сопоставить Request URI в переменной %{HTTP_HOST}, он соответствует только доменному имени. Чанг ваше правило:

RewriteEngine On 
RewriteBase /apps/dept/ 

RewriteCond %{HTTP_HOST} ^example\.orgname\.state\.tx\.us$ [NC] 
RewriteRule ^(.*)$ http://example.orgname.texas.gov/apps/dept/$1 [L,R=301] 
+0

Это работает только для каталога/apps/dept /, но не для каталогов под департаментом. Есть ли способ позаботиться обо всех приложениях под департаментом без выполнения и .htaccess для каждого приложения? – edroms

Смежные вопросы