重写localhost和实时环境的规则

时间:2015-10-09 18:33:35

标签: .htaccess mod-rewrite url-rewriting

我想添加在本地环境(localhost)和我的liveserver上工作的rewriterules。

为什么?

我在本地测试项目并将其上传到liveserver时,我不想更改规则。

  1. 添加规则

    这是一个例子

    (ANY-URL)index.php?page=somepage
    

    更改为

    (ANY-URL)/somepage
    

    所以我使用了一个rewritemod生成器并将其粘贴到其中:

    index.php?page=somepage
    

    我得到的重写,看起来像这样:(当然我的.htacces以RewriteEngine On开头)

    RewriteRule ^([^/]*)$ /?page=$1 [L]
    

    当我尝试前往(http:) //localhost/myproject/development/index.php?page=login时,它会将我发送到我当地开发环境的根目录。但是地址线中的网址并没有改变。

  2. 测试

    当然,我通过将整个URL粘贴到生成器中来尝试其他一些规则,以测试重写的内容是否有效。 此处URL也不会更改为short-url,但服务器无法再找到样式表和javascripts。我被重定向到index.php

  3. 可能的解决方案?

    • 也许它有一些东西与#34; RewriteBase"?
    • 我是否必须设置基道?
  4. 我的.htacces位于:

    //localhost/myproject/development/.htaccess
    

    稍后我还想更改看起来像这样的路径:

    (ANY-URL)index.php?page=somepage&second=hello&third=world&fourth=cool
    

    此外,我还在寻找适用于这两种环境的解决方案。

1 个答案:

答案 0 :(得分:2)

由于htaccess位于子目录内,请使用RewriteBase

RewriteEngine On
RewriteBase /myproject/development/

完成后,您将使用php / html文件中的base元素。这将解析页面中脚本/样式表的地址。

<base href="/myproject/development/" />

现在,htaccess中的重写将是:

RewriteRule ^((?!index\.php)[^/]+)/?$ index.php?page=$1 [L]