hteaccess:htaccess显示404错误的漂亮网址

时间:2018-04-08 12:53:28

标签: .htaccess

我是编码的初学者。我想让网址漂亮。我在谷歌搜索这个问题,然后我发现我必须使用.htaccess。我尝试了htaccess代码。

这是我的网址外观 的 website.com/project-details.php?Residential/The-Serenas/1

我想像 website.com/Residential/The-Serenas/1

一样制作网址

我想通过htaccess从网址中删除整个" project-details.php?" 字词。

这是我的.htaccess代码

Options +FollowSymLinks

RewriteEngine On 

RewriteBase /basename/ 





# external redirect from actual URL to pretty one 

RewriteCond %{THE_REQUEST} /project-details\.php\?([^\s&]+) [NC] 

RewriteRule ^ view/%1? [R=302,L] 



RewriteCond %{THE_REQUEST} /project-details\?([^\s&]+) [NC] 

RewriteRule ^ view/%1? [R=302,L] 







# internally rewrites /view/ABC123 to project-details.php?ABC123 

RewriteRule ^view/([A-Za-z0-9_@./#&+-]+)$ project-details.php?$1 [L,NC,QSA] 





# PHP hiding rule 

RewriteCond %{REQUEST_FILENAME} !-d 

RewriteCond %{REQUEST_FILENAME} !-f 

RewriteCond %{REQUEST_FILENAME}.php -f 

RewriteRule ^(.*)$ $1.php [L] 

以上htaccess代码工作和网址替换为 website.com/view/Residential/The-Serenas/1

如果我从此行RewriteRule ^ view/%1? [R=302,L]删除查看

然后页面转到404错误。如果我不删除视图,那么代码可以工作,但查看显示在网址上。 我不想在网址上显示任何内容只删除" project-details.php?"此

1 个答案:

答案 0 :(得分:1)

此规则用于检查请求uri是否为/project-details.php并且后面跟着任何查询字符串,并将用户重定向到与查询字符串匹配的uri。 %1是反向引用,并提供对模式的分组部分(括号中)的访问,在本例中为([^\s&]+)。例如,如果请求uri /project-details.php?Residential/The-Serenas/1,则用户将被重定向到/Residential/The-Serenas/1

RewriteCond %{THE_REQUEST} /project-details\.php\?([^\s&]+) [NC] 
RewriteRule ^ %1? [R=302,L] 

此规则是检查用户是否请求现有文件和目录,如果没有,则在内部重写uri(只有服务器知道目标uri,用户不知道这一点)。例如,如果请求了uri /Residential/The-Serenas/1,服务器会将uri重写为project-details.php?/Residential/The-Serenas/1

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([A-Za-z0-9_@./#&+-]+)$ project-details.php?$1 [L,NC,QSA]