.htaccess MOD重写和CSS和其他包括路径


.htaccess MOD Rewrite and CSS and other Include Paths

我是新的。htaccess,我用它来传递使用'虚拟'页面的网页之间的变量。我非常长的列表,并为每一行添加3个索引到虚拟页面。参数然后被.php从Mysql数据库中检索选中的记录。

我有一个MVC类型的设置与我的主PHP页面(wHazLog.php)在"wHazLog"我的apache web服务器的文件夹。我有我所有的。php,。css,。js,。html(模板),文件在"inc"子文件夹.

所有包含类的.php文件都是在wHazLog.php的开头使用require_once加载的。除了一些ajax .php文件之外,这些文件必须重新包含必要的类。我的。htaccess文件看起来像这样(有更多的规则,但它们是相同的格式):

RewriteEngine Off
RewriteEngine On
#view all hazards in selected safety case
RewriteRule ^(safetycase)/([^/]+)'.html$ wHazLog.php?pgtyp=$1&scid=$2 [L]
#add hazard to selected safety case
RewriteRule ^(safetycase)/([^/]+)/add'.html$ wHazLog.php?pgtyp=$1&scid=$2 [L]
#view/edit selected hazard
RewriteRule ^(hazard)/([^/]+)'.html$ wHazLog.php?pgtyp=$1&hid=$2 [L]
#add control measure to selected hazard
RewriteRule ^(hazard)/([^/]+)/add.html$ wHazLog.php?pgtyp=$1&hid=$2 [L]
#edit/edit control measure
RewriteRule ^(controlmeasure)/([^/]+)'.html$ wHazLog.php?pgtyp=$1&cmid=$2 [L]

登录和主页只是使用表单提交来传递页面之间的数据都很好:www. wHazLog/wHazLog.php

当我开始使用依赖于MOD重写的页面时,例如:www. wHazLog/危害/藏= 776我必须开始前缀包含url;". ./"。

这是相当复杂的找出每个页面,是否有一个更简单的方法来设置我的包括路径,并有它修改取决于MOD Reqrite规则正在使用?

告诉apache总是从/重写,而不是按照url的结构:

RewriteBase /

我也会要求它尊重真实的文件和文件夹…

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteBase /

为什么要包含这些文件?它们是静态页面吗?

是否有一种更简单的方法来设置我的包含路径,并根据正在使用的MOD Reqrite规则修改它?

简短的回答是…没有。

更好的答案是…

首先,注意不要使用像../../myfile.php
这样的相对URL路径最好使用根路径url,如/sub-folder-1/sub-folder-2/myfile.php
这样更容易跟踪你向哪里发送文件请求。

第二-没有办法不这样做。.htaccess文件需要知道文件的确切位置,是相对位置还是基于根目录路径