我有一个简单的网络应用程序,我将其设置为使用 .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" />
如果我使用它的完整路径,它就会起作用:href="/myapp/style.css"
。
该应用程序是在添加重写规则之前编写的,因此这也会破坏应用程序中的所有链接。 href="index.php"
必须变成href="/myapp/index.php"
。
我是否必须返回并修复所有链接才能使用重写规则,或者我可以更改配置?(Ubuntu Server 11,Apache2,PHP5)
谢谢。
答案1
如何捕获所有资源请求并将它们重写为所需的状态?
# Existing config:
RewriteEngine on
RewriteRule ^records/view/([0-9]+)$ ./record_view.php?id=$1 [NC]
# Add:
RewriteRule ^records/view/(.*)$ ./$1 [NC]
这可以修复资源,但对链接没有帮助——那些需要重定向。
当然,您可以使用更多规则来解决这个问题,但我建议修复链接。清理 HTML 以适应应用程序的结构比在 Apache 的配置中对其进行修改更有意义。