我想将我的网址从http://website.com/preview.php?id=puzzled重写为http://website.com/cv/puzzled 从http://website.com/resume.php?id=puzzled到http://website.com/puzzled ......但似乎我没有得到这个结果。
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([0-9a-zA-Z-]+) /resume.php?id=$1 [QSA,L]
RewriteRule ^cv/([0-9a-zA-Z-]+) /preview.php?id=$1 [QSA,L]
答案 0 :(得分:1)
尝试这样,
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^cv/([\w-]+)$ preview.php?id=$1
RewriteRule ^([\w-]+)$ resume.php?id=$1
RewriteRule ^([\w-]+).php$ $1 [L]
来自Apache mod_rewrite docs
变量SCRIPT_FILENAME和REQUEST_FILENAME包含相同的变量 value - 内部request_rec的filename字段的值 Apache HTTP Server的结构。第一个名字是常见的 已知的CGI变量名称,而第二个是合适的 REQUEST_URI的对应物(包含uri字段的值) of request_rec)。
如果发生替换并且重写继续,则值为 两个变量都会相应更新。
如果在每个服务器上下文中使用(即,在请求映射到之前) 文件系统)SCRIPT_FILENAME和REQUEST_FILENAME不能包含 完整的本地文件系统路径,因为此阶段路径未知 处理。这两个变量最初都包含值 在那种情况下REQUEST_URI。为了获得完整的本地文件系统 每个服务器上下文中的请求路径,使用基于URL的预测 %{LA-U:REQUEST_FILENAME}确定最终值 REQUEST_FILENAME。
答案 1 :(得分:1)
您可以使用以下规则:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([\w-]+)/?$ resume.php?id=$1 [QSA,L]
RewriteRule ^cv/([\w-]+)/?$ preview.php?id=$1 [NC,QSA,L]