【发布时间】:2011-10-11 16:18:41
【问题描述】:
我正在尝试使 mod_rewrite 成为 url 中的第一个子目录字符串,以便在类/db 中创建与“jsfiddle.net 保存的 url”类似的功能。该脚本运行良好并进行了重写。
例如网址
http://jsfiddle.net/RyEue/
这很好用(加载所有 css、脚本等):
http://www.domain.com/787HHJ2
这是我过去使用的方法。
问题在于以最后一个斜杠、脚本、css 和其他松散路径结束 URL 时。
http://www.domain.com/787HHJ2/
重写脚本:
DirectoryIndex index.php index.html
Options +FollowSymlinks
RewriteEngine On # Turn on the rewriting engine
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{QUERY_STRING} !.
RewriteRule ^.+/?$ index.php [QSA,L]
不确定这是否与 Rewritebase 有关,我尝试了多种方法。
PS。我尝试将路径设置为绝对路径(例如 src="/img/theimage.jpg"),但没有运气。
【问题讨论】:
-
规则没问题。请打开重写调试 (
RewriteLogLevel 9) 并检查重写日志,看看到底发生了什么。 -
@LazyOne,你的权利。有用。问题是它破坏了 css、脚本路径。
-
我已经澄清了这个问题。问题主要在于 css、脚本、图像和其他在使用尾随 / 时被破坏。
-
“休息”是什么意思?尝试
%{DOCUMENT_ROOT}%{REQUEST_URI}而不是%{REQUEST_FILENAME}。顺便说一句,RewriteCond %{QUERY_STRING} !.是什么意思——仅当查询字符串为空时? -
“中断”是指像 img 这样的 html 元素在重写后不会加载。是的,只有查询字符串为空。我正在尝试显示 index.php 及其所有元素。
标签: php html apache mod-rewrite