Php 防止对CSS URL进行htaccess重写

Php 防止对CSS URL进行htaccess重写,php,regex,apache,.htaccess,mod-rewrite,Php,Regex,Apache,.htaccess,Mod Rewrite,为此,我正在使用.htaccess创建一个标准重写 http://www.myurl.com/post/{id}/ 现在,它可以完美地工作,但所有其他外部URL(例如CSS和JavaScript)都不能正常工作。 有没有一种方法可以在不改变所有url的情况下阻止它?我在谷歌上搜索没有成功,有什么想法吗?只是将物理文件排除在你的条件之外 RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^post/([0-9]+)/?$ post.php?

为此,我正在使用
.htaccess
创建一个标准重写

http://www.myurl.com/post/{id}/

现在,它可以完美地工作,但所有其他外部URL(例如CSS和JavaScript)都不能正常工作。
有没有一种方法可以在不改变所有url的情况下阻止它?我在谷歌上搜索没有成功,有什么想法吗?

只是将物理文件排除在你的条件之外

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule    ^post/([0-9]+)/?$    post.php?id=$1    [NC,L]

您需要一个附加规则来修复css、js和图像链接:

# your rewrite rule
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^post/([0-9]+)/?$ post.php?id=$1 [QSA,NC,L]

# fix css, js, image links
RewriteRule ^post/(.+?\.(?:jpe?g|gif|bmp|png|tiff|css|js))$ /$1 [NC,L]

或者,确保在css、js、图像文件中使用绝对路径,而不是相对路径。这意味着您必须确保这些文件的路径以
http://
或斜杠
/

开头。好的回答,我肯定会改变这一点,但anubhava的回答解决了真正的问题。如果使用了相对css路径,并且路径正在变为例如
/post/css/style.css
,这实际上没有帮助,这只是访问文件的第一步。我用这种方法尝试过,但它在RewriteCond%{REQUEST_FILENAME}上返回404 error RewriteEngine-f RewriteRule^post/([0-9]+)/?$index.php?p=$1[NC,L]有什么想法吗?你必须通过文件的真实路径访问文件,而不是使用
post/
。如果你想要一些东西,请参考anubhava的答案;)这里有更多解释:或者确保所有路径都与站点根相关(即,在HTML代码中包含
/css/stylesheet.css
而不是
css/stylesheet.css
)。
# your rewrite rule
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^post/([0-9]+)/?$ post.php?id=$1 [QSA,NC,L]

# fix css, js, image links
RewriteRule ^post/(.+?\.(?:jpe?g|gif|bmp|png|tiff|css|js))$ /$1 [NC,L]