这个问题已经有了答案:
Reference: mod_rewrite, URL rewriting and “pretty links” explained
4答
我有一个看起来像

https://sparkle.000webhostapp.com/movie.php?id=16

我想把它改成
https://sparkle.000webhostapp.com/movie/16

我已将.htaccess文件创建为
   Options -MultiViews
RewriteEngine On

# redirect "/movie.php?id=xxx" to "/movie/xxx"
RewriteCond %{THE_REQUEST} \s/movie\.php\?id=([0-9]+)\s [NC]
RewriteRule ^ /movie/%1? [R=301,L]

# internally rewrite "/movie/xxx" to "/movie.php?id=xxx"
RewriteRule ^movie/([0-9]+)$ /movie.php?id=$1 [L]

但问题是样式文件,即没有加载css文件。
链接中未定义样式

最佳答案

如果您的css被这样引用:<link rel="stylesheet" href="homepage.css" />,它将与请求的路径相关!
最初,对/movie.php?id=123的请求将呈现假定css位于/homepage.css的页面。
但是,当您创建重写时,请求被理解为/movie/123,并且假定css位于/movie/homepage.css
若要解决此问题,请使用/开始对css的引用,以便它始终引用web根目录。
更新的<link>标记应该<link rel="stylesheet" href="/homepage.css" />
您可以通过检查浏览器的错误控制台并查找类似“GET https://sparkle.000webhostapp.com/movie/homepage.css 404”的内容来确认这一点。

10-07 12:32
查看更多