2016-08-18 71 views
1

與htaccess的工作的i-解決有關從(例如)的URL轉換:HTTP與htaccess的更新URL重定向僅

的(a)http://www.mydomain.ext/dir/myfile.php

到:

(B)http://www.mydomain.ext/dir/myfile

(刪除.php)結束。但是,如果用戶從網絡打字中(a)他們顯示網址以便輸入。 我如何解決becouse鍵入(a)webserver display too(b)? 我想過從(a)到(b)的重定向,但不認爲這是最好的解決方案,有什麼建議解決它? 非常感謝您的幫助。


補充一點: 嘗試用一個具體的例子來更好地解釋這個問題。從開始的.htaccess我有:

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.*)$ $1.php 
</IfModule> 

和我解決它使用PHP這樣:

$default_url = "http://".$_SERVER["HTTP_HOST"].$_SERVER 

["REQUEST_URI"]; // display something as: http://www.mysite.ext/dir/filename.php 
    $canonical_url = str_replace(".php", "", "http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"]); // display something as: http://www.mysite.ext/dir/filename 
    if ($default_url != $canonical_url) { 
     header('Location: ' . $canonical_url, true, 301); 
    } 

請問作爲更新的.htaccess代碼整合有關PHP腳本descripted功能。我看起來很多例子,但沒有解決它。 非常感謝。

+0

https://github.com/phanan/htaccess – hjpotter92

+0

@ hjpotter92感謝鏈接,環顧四周後,如果類型(a)網頁加載正確,瀏覽器中顯示如(a)所示。當我輸入url(b)網頁加載正確,我顯示在(b)中。 我想解決這個問題:如果我鍵入(a)我想顯示在(b)中。它當然在瀏覽器的url字段中。我希望現在用例子來解釋一下。 –

+0

@anubhava,我的問題不是允許一個網頁加載沒有*。PHP擴展從URL(我已經解決了,我在我的帖子中說過)。我的問題是其他,當我鍵入一個URL放*。PHP擴展名頁面加載(作爲相同的URL沒有*。PHP),但到瀏覽器的字段URL仍然是* .PHP擴展名的URL。我只想在模式中進行輸入:http://www.pippo.it/page.php在URL顯示的瀏覽器中,我有:http://www.pippo.it/page。解決方案是一個重載頁面,重定向到:http://www.pippo.it/page,但我需要如何使用htaccess來做到這一點?謝謝。 –

回答

1

爲了我的意見轉換成一個答案,在你的根的.htaccess這些規則:

RewriteEngine on 

# To externally redirect /dir/foo.php to /dir/foo 
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC] 
RewriteRule^/%1 [R=301,NE,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.+?)/?$ $1.php [L] 
+0

非常感謝。所以工作很好!我不想濫用你的耐心,但我可以問你最後一件事嗎?當源url指向目錄(例如http://www.mydomain.ext/mydir)時,我得到如下內容:http://www.mydomain.ext/mydir/所以我問你,因爲我可以清理最後一個字符,並且只有:http://www.mydomain.ext/mydir。我在這裏搜索一下它:http://stackoverflow.com/questions/21417263/htaccess-add-remove-trailing-slash-from-url但沒有幫助我很多,可以告訴我更好,因爲我可以解決?非常感謝。 –

+0

如果URL指向一個目錄,則出於安全原因,您必須保留最後的斜槓。這就是Apache的'mod_dir'模塊爲目錄URL自動添加尾部斜線的原因。 – anubhava

+0

進一步詳細說明,[閱讀'mod_dir'官方文檔](http://httpd.apache.org/docs/current/mod/mod_dir.html#directoryslash),並閱讀**安全警告**。 – anubhava