我想添加在本地环境(localhost)和我的liveserver上工作的rewriterules。
为什么?
我在本地测试项目并将其上传到liveserver时,我不想更改规则。
添加规则
这是一个例子
(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
时,它会将我发送到我当地开发环境的根目录。但是地址线中的网址并没有改变。
测试
当然,我通过将整个URL粘贴到生成器中来尝试其他一些规则,以测试重写的内容是否有效。 此处URL也不会更改为short-url,但服务器无法再找到样式表和javascripts。我被重定向到index.php
可能的解决方案?
我的.htacces位于:
//localhost/myproject/development/.htaccess
稍后我还想更改看起来像这样的路径:
(ANY-URL)index.php?page=somepage&second=hello&third=world&fourth=cool
此外,我还在寻找适用于这两种环境的解决方案。
答案 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]