2016-11-16 211 views
1

我有一個文件夾測試。如果一個人導航到文件夾測試,我希望瀏覽器顯示新的。.htaccess重寫規則php重定向文件夾到另一個

服務器上不存在新的文件夾,我只是希望它顯示爲新的,它在服務器上鍊接到文件夾測試。

這是我的配置(的httpd-vhosts.conf):

<VirtualHost server.com> 
    DocumentRoot "c:/www/" 
    ServerName server.com 
    Alias /new "c:/www/test" 
    <Directory "c:/www/"> 
     Options +Indexes +Includes +FollowSymLinks +MultiViews 
     AllowOverride All 
     Require all granted 
    </Directory> 
</VirtualHost> 

所以,要清楚,如果有人瀏覽到:

  • server.com/test(服務器使用的文件夾測試,但server.com/new顯示在瀏覽器中
  • server.com/(與上面相同=> server.com/new顯示在瀏覽器中)
  • server.com/index.php(服務器使用來自文件夾t的index.php est,瀏覽器顯示server.com/new/index.php
  • server.com/test/index.php(與上面相同)
  • server.com/test/folder2/index.php?variable=1(服務器使用文件夾test/folder2中的index.php並將變量提供給php文件。瀏覽器顯示server.com/new/folder2/index.php?variable=1)

我試過不同的.htaccess重寫,但我不能得到它的工作。

也許我不必使用別名?

不要只給我一個鏈接到Apache手冊,因爲我讀過它,但無法得到它的工作...

回答

1

你不需要Alias的這使註釋掉:

Alias /new "c:/www/test" 

然後有下列規則:

<VirtualHost server.com> 
    DocumentRoot "c:/www/" 
    ServerName server.com 

    <Directory "c:/www/"> 
     Options +Indexes +Includes +FollowSymLinks +MultiViews 
     AllowOverride All 
     Require all granted 
    </Directory> 

    DirectoryIndex index.php 
    RewriteEngine On 

    RewriteRule ^/?$ /new/ [L,R=301] 

    RewriteCond %{THE_REQUEST} \s/+test(\S*)\s [NC] 
    RewriteRule^/new%1 [R=301,NE,L] 

    RewriteRule ^/?new(/.*)?$ /test$1 [L,NC] 

</VirtualHost> 
+0

我在不同的時區比你我覺得很,很抱歉爲我遲到的答覆。我正在測試它,但我認爲我仍然在做錯事。我會再測試一下,然後讓你知道。我收到500錯誤。 –

+0

耶,這個伎倆!只有當我訪問server.com時,它纔會將我重定向到server.com/new。順便說一句,R = 301必須在那裏?這意味着永久重定向。而且我不需要添加QSA(從請求追加查詢字符串到替換的URL)? –

+1

好吧再試試我的更新規則 – anubhava