我是溺爱的初学者。我想让网址漂亮。我在谷歌上搜索这个问题,然后我发现我必须使用 .htaccess。我尝试了htaccess代码。
这是我的网址的样子website.com/project-details.php?Residential/The-Serenas/1
我想让网址像 website.com/Residential/The-Serenas/1
我想通过htaccess从url中删除整个"项目详细信息.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代码工作和url替换到 website.com/view/Residential/The-Serenas/1
如果我从这一行中删除视图RewriteRule ^ view/%1? [R=302,L]
.
然后页面转到 404 错误。如果我不删除视图,那么代码有效,但视图显示在 url 上。我不想在 url 上显示任何内容,只删除"项目详细信息.php?
此规则是检查请求 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]