.htaccess 重写本地主机和实时环境的规则

.htaccess 重写本地主机和实时环境的规则,.htaccess,mod-rewrite,url-rewriting,.htaccess,Mod Rewrite,Url Rewriting,我想添加在本地环境(localhost)和我的liveserver上工作的重写规则 为什么? 当我在本地测试我的项目并将其上传到liveserver时,我不想更改规则 添加规则 这里有一个例子 (ANY-URL)index.php?page=somepage 改为 (ANY-URL)/somepage 因此,我使用了rewritemod生成器并将其粘贴到其中: index.php?page=somepage 我得到的重写规则如下:(当然,我的.htacces是以RewriteEngine打

我想添加在本地环境(localhost)和我的liveserver上工作的重写规则

为什么?

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

  • 添加规则

    这里有一个例子

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

    (ANY-URL)/somepage
    
    因此,我使用了rewritemod生成器并将其粘贴到其中:

    index.php?page=somepage
    
    我得到的重写规则如下:(当然,我的.htacces是以RewriteEngine打开开始的)

    当我尝试访问
    (http:)
    //localhost/myproject/development/index.php?page=login
    它将我发送到本地开发环境的根目录。但是地址行中的URL不会改变

  • 测试

    当然,我尝试了其他一些规则,将整个URL粘贴到生成器中,只是为了测试重写是否有效。 这里的URL也不会变为短URL,但服务器再也找不到样式表和Java脚本了。我被重定向到index.php

  • 可能的解决方案?

    • 也许它和那个“基地”有什么关系
    • 我必须设置基本路径吗
  • My.htacces位于此处:

    //localhost/myproject/development/.htaccess
    
    稍后,我还想更改如下所示的路径:

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

    此外,我正在寻找一种在两种环境下都能工作的解决方案。

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

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

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

    谢谢所以我使用多个.htacces文件(在不同的子文件夹中)?@Fdev,如果你愿意的话。你也应该这样做:谢谢,到目前为止还有效。似乎它只适用于一个方向(从长到短的URL),我想我需要另一个重写规则来完成从短到长的URL的相同工作。PS:我不需要HTML中的base元素-只需在.htaccess文件中重写base:)当我将项目上载到时,我要对RewriteBase做什么?移除它?@Fdev是的!或者,您可以将其更改为
    RewriteBase/
    <base href="/myproject/development/" />
    
    RewriteRule ^((?!index\.php)[^/]+)/?$ index.php?page=$1 [L]