php - 如何通过 htaccess 重写 URL?
问题描述
如何重写以下网址?
http://www.planethomes.in/project-detail.php?city=mumbai&project=Puraniks-Tokyo-Bay-Phase-1
我想重写为
http://www.planethomes.in/property/mumbai/Puraniks-Tokyo-Bay-Phase-1
但它没有发生。我的 .htaccess 文件如下
Options -Indexes
Options +FollowSymlinks
RewriteEngine On
RewriteRule ^property/([_0-9a-z-]+)/([_0-9a-z-]+) project-detail.php?city={R:1}&project={R:2}
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
解决方案
您可以使用%{QUERY_STRING}
:
RewriteEngine On
RewriteCond %{QUERY_STRING} city=(.+)&project=(.+)$ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/property/%1/%2 [R=301,L,QSD]
然后在内部重写 URL 并添加以下内容:
RewriteRule ^/property/([^/]*)/([^/]*) /project-detail.php?city=$1&project=$2 [L]
确保在测试之前清除缓存。您会注意到我使用R=301
的是永久重定向,我建议R=302
在测试时使用,因为这是临时重定向。
推荐阅读
- apache-spark - 火花是否异步写入数据帧
- python - 如何从 Python 连接到 Oracle Exadata?
- c - 输出是否总是由 C 中的内联汇编中的 %eax 寄存器确定?
- python - 问题 dtyping 3 维结构化数组
- c++ - 编译 c++ 文件时出现“找不到命令”
- css - BEM 和 css 框架
- hyperledger-fabric - 使用 Hyperledger Fabric 添加自定义节点 OU
- node.js - Node js Rest API 不工作 - 共享主机服务器 - Plesk
- google-sheets - 使用 Google 表格中的 arrayformula() 在每一行上查找 min() 值
- ios - createFile 失败时如何获取根本原因?