簡體   English   中英

從Windows服務器遷移后.htaccess重寫不起作用

[英].htaccess rewrites not working after migration from Windows server

好的,所以我一直在我雇主的一個其他現場網站的子文件夾中開發一個網站。 開發中的URL結構為http://our-live-site.net/our-dev-site.com/index.php 開發服務器在Windows上運行,我剛剛將其遷移到的新服務器是* nix Apache服務器。 我不太確定這是否是沒有多余目錄放在前面的問題,還是Windows / Linux在解析.htaccess文件的方式上有區別。 在對此問題進行了一些研究之后,我傾向於相信前者而不是后者。 我的.htaccess文件中只有3條規則,並且將問題隔離到后兩個重寫中。

    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteRule ^(inc/ajax|inc/pages|js|fonts|moving-tips)($|/) - [L]

->    RewriteRule ^(.*).php template.php?page=$1 [NC]
->    RewriteRule ^(.*).php template.php?location=$1 [NC][QSA]
    </IfModule>

我需要做的是將所有要求說http://new-site.com/some-page.php請求傳遞到http://new-site.com/template.php?page=some-page 我還需要保留為位置頁面捕獲另一個$_GET var的選項(它們使用不同的模板),因此RewriteRule ^(.*).php template.php?location=$1 [NC][QSA]首先重寫。 我有種感覺,我忽略了一些非常簡單的事情,主要是因為……規則的簡單性。 任何幫助,我們將不勝感激,我敢肯定,這只是一個新鮮的眼光看問題。

嘗試:

RewriteCond %{REQUEST_URI}   !^/template.php
RewriteRule ^(.*).php template.php?page=$1&location=$1    [NC,L]

替換這兩個RewriteRules

發生的是,當apache重寫時,它會在內部重定向,並且所有規則都將BACKUP的重寫路徑傳遞回去,只有在重寫路徑(不是查詢字符串)與未重寫路徑相同時才停止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM