![](/img/trans.png)
[英]How to redirect query string to subdirectory based url using .htaccess?
[英].htaccess redirect subdirectory as query string in php
這很難解釋,所以希望我對我的問題有所了解。
(1)我想創建“ SEO友好”鏈接,以從網站中刪除查詢字符串。 只有一個變量,我們稱它為“頁面”。 這是我的.htaccess
文件的以下代碼。
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*)$ index.php?page=$1
這可以提供正確的重定向。 因此, /applications/
將發送到index.php?page=applications
。
(2)我的index.php將包含一個基於$_GET['page']
值的視圖頁面。 以下是一些示例代碼:
switch ($_REQUEST['page']) {
default:
include ("home.php");
break;
case "apps":
include ("apps.php");
break;
}
到目前為止似乎還沒有問題。
(3)讓我們apps.php
的精確副本home.php
。 home.php可以很好地加載,但是apps.php
不會加載鏈接的CSS和JScript頁面。 加載apps.php
,它認為它位於/apps/
目錄中。 要加載鏈接的頁面,我需要在文件名之前插入“ ../”。 然后它正確顯示。
所以我的問題是-如何正確編寫.htaccess
文件,以便home.php
和apps.php
頁面可以是相同的文件並產生相同的結果,而不是將apps.php
文件視為/apps/
目錄?
首先,我應該道歉,因為我沒有解決方案,其中涉及對htaccess進行更改。 我的解決方案具有不同的性質。
我認為,如果您有一個config變量(最好是在一個配置文件中)可以解決問題,該文件將保存圖像,js等的根文件夾。大多數情況下,它的public_html,文檔根目錄,網站的URL指向至。 因此您的配置變量可能如下所示:
$base_url = 'http://www.mywebsite.com/';
配置文件應無條件地包含在index.php中。
因此,當您包含任何js或圖像時,您將像這樣進行操作:
<script type="text/javascript" src="<?php echo $base_url;?>js/global.js" />
<img src="<?php echo $base_url;?>images/gradient_green.jpg" />
如果將配置文件包含在index.php中,則根據切換情況,所包含的所有文件都將能夠使用$ base_url變量。
另一種可能的解決方案是使用基本標簽。 在這里查找:
http://www.w3schools.com/TAGS/tag_base.asp
我希望這有幫助。
對網頁上的js,css和圖片使用絕對網址(以斜杠開頭)。
/js/main.js而不是js / main.js
除非進行外部重定向(通過將[R]標志添加到RewriteRule中),否則無法使用.htaccess進行操作。 但是隨后您公開了查詢字符串,這是您首先要避免的字符串。
無法完成的原因:不是apps.php認為它在/ apps /目錄中,而是瀏覽器認為。 在apps.php生成的頁面源中,您將相對URL發送回瀏覽器,現在瀏覽器將請求相對於其所請求頁面位置的這些資源。 對於瀏覽器,無論您在服務器端內部進行了什么重寫,它所獲得的頁面都位於/ apps /中。
因此,您有以下選擇:
最后一個是唯一的實物選項恕我直言。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.