2016-09-08 43 views
0

我想我的URL重写从http://website.com/preview.php?id=puzzledhttp://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] 

回答

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的文档

变量SCRIPT_FILENAME和REQUEST_FILENAME包含相同 值 - 内部的request_rec的文件名字段的值 Apache HTTP Server的结构。的第一个姓名是常用 已知CGI变量名而第二个是相应的 对方REQUEST_URI的(其中包含URI字段request_rec结构 的值)。

如果发生了置换,并重写将继续,这两个变量将相应更新的 值。

如果每个服务器上下文中使用(即,之前请求被映射到 文件系统)和SCRIPT_FILENAME REQUEST_FILENAME不能包含 完整本地文件系统路径由于路径是在该阶段的处理的 未知。在这种情况下,两个变量最初将包含值为 REQUEST_URI。为了获取每个服务器上下文中请求的完整本地文件系统 路径,请使用基于URL的预读 %{LA-U:REQUEST_FILENAME}来确定最终值 REQUEST_FILENAME。

+0

好的,谢谢你,你能解释一下这更多? :) –

+0

嗨,这与我的登录网址无法正常工作http://website.com/login.php其中504这里 –

+0

你怎么把网址登录'website.com/login.php'或'website.com/login ' –

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] 
+0

http://website.com/puzzled给予404错误 –

+0

尝试第一个规则为'重写规则^([\ w - ] +)?/ $ /resume.php?id=$1 [QSA,L]' – anubhava

+0

不'resume.php'存在于网站根目录以及'.htaccess'中? – anubhava