重写规则改变了Web应用程序的基本path

我有一个简单的networking应用程序,我把它设置为使用.htaccess重写规则。

Options +followSymlinks RewriteEngine on Rewriterule ^records/view/([0-9]+)$ ./record_view.php?id=$1 [NC] 

它的工作原理,但页面没有看到外部的CSS文件。 它不是寻找./style.css,而是寻找records / view / style.css。

 <link rel="StyleSheet" href="style.css" type="text/css" /> 

如果我使用它的完整path,它工作: href="/myapp/style.css"

该应用程序是在添加重写规则之前编写的,所以这也打破了应用程序中的所有链接。 href="index.php"必须成为href="/myapp/index.php"

我是否必须回去修改所有链接才能使用重写规则,或者是否有可以更改的configuration? (Ubuntu服务器11,Apache2,PHP5)

谢谢。

如何捕捉所有的资源请求,并重新写回他们需要的?

 # Existing config: RewriteEngine on RewriteRule ^records/view/([0-9]+)$ ./record_view.php?id=$1 [NC] # Add: RewriteRule ^records/view/(.*)$ ./$1 [NC] 

这修复了资源,但没有帮助链接 – 那些将需要redirect。

当然,你可以用更多的规则来解决这个问题,但是我build议你修改链接。 清理你的HTML来处理你的应用程序的结构比在Apache的configuration中对它进行黑客攻击更有意义。