htaccess用于本地测试和实时服务器

时间:2015-10-18 16:22:21

标签: .htaccess mod-rewrite xampp localhost

我很接近,我认为我的最终解决方案。 .htaccess 如下所示:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /myproject/development/
RewriteRule ^((?!index\.php)[^/]+)/?$ index.php?page=$1 [L]
RewriteRule ^((?!index\.php)[^/]+)/([A-Za-z0-9]+)/([0-9]+)/([0-9]+)/?$ index.php?page=$1&keyword=$2&zip=$3&range=$4 [L,R]

我不需要第一条规则的RewriteBase(对此有点意外)但如果我添加第二条规则并打开此网址,我需要它:

//localhost/myproject/development/somepage/test/13245/50

否则页面将被打开,但当然没有样式表,然后可以找到javaScripts。

1。)目标:我想在不更改或添加rewriteBase的情况下使用第二个rewriteRule。我需要在 .htaccess 中更改什么才能在不使用rewriteBase的情况下继续测试我的项目。

为什么:正如我之前所说,我想在本地和实时服务器上测试我的项目,而不会在项目配置上做太多改变。

2。)[R]标志如果我要求

//localhost/myproject/development/somepage/test/53229/2000

当然,在adressline中我们有这个网址

//localhost/myproject/development/index.php?page=somepage&keyword=test&zip=12345&range=2000

为了避免这种行为,我应该删除R-Flag。但是再也找不到CSS和JS了。另外,如果可能,我正在寻找没有rewritebase,basepath,虚拟主机等的解决方案。

这是我开始的地方: Rewrite rules for localhost AND live envoirement

1 个答案:

答案 0 :(得分:1)

通过外观,您不希望第二个R上的RewriteRule标记。这打败了你的“漂亮”网址的对象。

  

然后再找不到CSS和JS了。

因为您正在使用CSS和JS文件的相对路径。将路径更改为root-relative(以斜杠开头),或使用页面base部分中的head元素,以指示所有相对URL相对于的URL:

<base href="http://www.example.com/page.html">

更多信息:
https://developer.mozilla.org/en/docs/Web/HTML/Element/base

  

我不需要第一条规则的RewriteBase(对此有点意外)

第1条规则(内部重写)不需要RewriteBase,因为会自动添加目录前缀(导致此.htaccess文件的文件系统路径)回到相对路径替换。

但是,对于外部重定向(即。R标志),目录前缀没有意义,因此您需要指定一个根相对(以斜杠开头) )或绝对URL。或者指定适当的RewriteBase指令,该指令将覆盖为相对替换添加的URL路径(这就是全部)。