Apache mod_rewrite假pushState目录映射

时间:2014-03-25 13:09:53

标签: apache mod-rewrite httpd.conf pushstate url-mapping

如果在我的httpd.conf文件中使用mod_rewrite规则玩了很多。无论我的研究如何,我都无法完成一些工作。

这是我的文件结构:

/
-index.php
-app.php
    /css
    -style.css
    /js
    -script.js

服务器应该提供index.php(主页)或app.php(单个应用程序页面)。脚本和样式文件都包含在两个php文件中。

目标

  • 我的域 domain.com 应提供 index.php ,地址栏应显示 www.domain.com

(默认情况下,这似乎已经有效了。)

  • 如有必要,子域 domain.com/a 应更改为 domain.com/a / 。此域名应该提供 app.php 文件。

(这已经在扩展了。一个问题是app.php中的相对链接是错误的,因为文件"认为"它位于子目录而不是root。我想改变)

  • domain.com/a / 之后的任何内容,例如 domain.com/a/user/10 应保留在地址栏中并照常提供 app.php 。理想情况下,为了再次保留相对链接,文件应该知道"它位于根文件夹中。

(这是为了支持"假冒" pushState服务器)编辑澄清:/ a /之后的所有内容都将由我的Javascript应用解释。当客户端点击domain.com/a/user/10之类的链接时,将不会向服务器发出额外请求。

加成

  • 向除根网址以外的所有网址添加尾部斜杠。

    e.g。将 domain.com/a/user/10 转入 domain.com/a/user/10 /

  • 如果网址丢失,请将网址添加到网址。

我尝试了什么

-add www

RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301]

-add斜杠

RewriteCond %{REQUEST_URI} !(/$|\.) 
RewriteRule (.*) %{REQUEST_URI}/ [R=301] 

-redirect / a /

RewriteCond %{REQUEST_URI} ^(/a/)$
RewriteRule ^ /app.php

非常感谢任何指针或帮助!感谢。

修改

我已使用此工具http://htaccess.madewithlove.be/来测试某些条件。

0 个答案:

没有答案