php - PHP 的高级 Htaccess 重写规则

标签 php .htaccess mod-rewrite

我目前有以下代码将搜索引擎友好的 url 重写为 PHP 可以处理的内容,但是存在一些问题。

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*)/(.*) index.php?$1/$2

这会将 domain.com/cat/mens/size/large/ 重写为 domain.com/index.php?cat/mens/size/large/


如果我可以使用不同数量的子目录(例如对 PHP 代码更友好的子目录)将其重写为这样的内容,那将是理想的选择:

理想的重写:domain.com/index.php?cat=mens&size=large

另一个例子:domain.com/page/value/subpage/subvalue/something/true/

应重写为:domain.com/index.php?page=value&subpage=subvalue&something=true


还有没有办法重写:domain.com/search/?q=blah+blah

到:domain.com/index.php?search&q=blah+blah

最佳答案

试试这个:

RewriteRule/page/(.*)/subpage/(.*)/something/(.*) index.php?page=$1&subpage=$2&something=$3

当 url 中的变量数量未预定义时,最好将其作为字符串传递给 php,并让它处理它(爆炸、内爆、foreach、构建数组)。

RewriteRule/search/?q=(.*) index.php?search&q=$1

至于你下面的要求:

RewriteRule/cat/(.*)/size/(.*)/?q=(.*)&abc=(.*) index.php?search&cat=$1&size=$2&q=$3&abc= $4

基本上,RewriteRule 的第一部分是给定的 url,第二部分是转到脚本的部分。第一个变量中的每个 (somethingInHere) 都可以用在第二个变量中,例如 $1、$2、$3 和 $4。

关于php - PHP 的高级 Htaccess 重写规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2317965/

相关文章:

javascript - PHP 与 jQuery : how to do it in this case

php - CodeIgniter 授权安全模型

php - Nginx + Yii 应用程序 = js,css - net::ERR_CONNECTION_REFUSED

php - 什么是 PHP 中的 userland 缓存 APCu 扩展?

php - strpos() 期望参数 1 为字符串,数组给定 CORE/Cake/I18n/I18n.php,第 140 行

html - 表单方法 = "get"漂亮的 URL

javascript - 自定义 404 页面导致子文件无法加载 javascript

apache - 强制重定向到除一个页面之外的所有页面的 SSL

apache - 删除所有子文件夹条件重写.htaccess Apache 1.3.42

php - 从 url 中删除 app/webroot