我是编码的初学者。我想让网址漂亮。我在谷歌搜索这个问题,然后我发现我必须使用.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?"此
答案 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]