重写我的网址,删除查询字符串并制作新的漂亮网址

时间:2016-09-08 09:44:16

标签: .htaccess mod-rewrite url-rewriting friendly-url

我想将我的网址从http://website.com/preview.php?id=puzzled重写为http://website.com/cv/puzzledhttp://website.com/resume.php?id=puzzledhttp://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]

2 个答案:

答案 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]