我目前的HTACCESS看起来像这样。
# Run everything else but real files through index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(gif|jpe?g|png|css|js)$
RewriteRule ^(.*)$ index.php?p=$1 [NC,L,QSA]
很棒的代码,当我键入子文件夹目录时,它会将参数重定向到index.php。适用于http://localhost/blah
(重定向为http://localhost/index.php?p=blah
)的内容非常有用,但对于http://localhost/blah/boink
则不太好。
后者的问题是重定向确实有效并且重定向到index.php,但由于某种原因,页面认为它位于子文件夹级别blah
。因此,我的../
,js
,css
和include
路径的所有硬编码require_once
现在在技术上都是“错误的”。无论如何解决这个问题?
在PHP中,当我尝试这样做时:
$file_url = explode("/", $_SERVER['PHP_SELF']);
// subtract 1 for left / and 1 for current file
$dir_loop = count($file_url) - 2;
$up_dirs = "";
// loop until to root directory
for ($i=0; $i<$dir_loop; $i++) {
$up_dirs .= "../";
}
...这似乎也不起作用,因为index.php位于根文件夹级别。我怀疑这可能是一个HTACCESS问题?想法?
答案 0 :(得分:0)
@Ron van der Heijden clued me into: RewriteCond %{REQUEST_URI} !\.(gif|jpe?g|png|css|js)$
. Modified the code as follows:
# Run everything else but real files through index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^.*\.(js|css|png|jpe?g|gif|ico)$ [NC]
RewriteRule ^(.*)$ index.php?p=$1 [NC,L,QSA]