![](/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.