php - 如何最小化 .htaccess 规则?

标签 php apache .htaccess mod-rewrite url-rewriting

我有以下用于 seo 友好 url 的 .htaccess 规则:

.htaccess 规则:

Options -MultiViews
ErrorDocument 404 http://localhost/aponit/dev/not-found.php
ErrorDocument 500 http://localhost/aponit/dev/404.php
RewriteEngine on

RewriteRule ^(?:zones/)?update/(\w+)/?$ zones/update.php?z=$1 [L,QSA,NC]
RewriteRule ^(?:cable-types/)?update/(\w+)/?$ cable-types/update.php?cbl=$1 [L,QSA,NC]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

现在,使用此规则我可以​​访问以下 url:

http://localhost/aponit/dev/zones/update/63
http://localhost/aponit/dev/cable-types/update/3

现在我必须创建更多这种类型的 url!那么这个 .htaccess 规则中是否有最小化规则的方法?

我的意思是如果我需要 10 个不同的 url,我必须向 .htaccess 文件添加 10 条规则。例如:

RewriteRule ^(?:another/)?another-f/(\w+)/?$ another/another-f.php?another-id=$1 [L,QSA,NC]

我想在这个 .htaccess 文件中为这种类型的 url 制定一条规则。

更新:

在区域文件夹下的 index.php 文件中,我有以下代码来编辑和添加新数据:

<a class="btn btn-success btn-xs" href="<?php echo SITE_URL."zones/update/$zone_id"?>" >Edit</a> 

<h4 class="panel-title pull-right"><a href="<?php echo SITE_URL.'zones/add' ?>" class="btn btn-primary">Add New Zones</a></h4> 

要编辑表单数据,我需要这种类型的 url:

http://localhost/aponit/dev/zones/update/63

太添加数据我需要这种类型的 url :

http://localhost/aponit/dev/zones/add

最后在 .htaccess 规则中我只需要一个规则来遵循这种类型的 url

最佳答案

使用这两个通用规则代替上述类型的规则:

RewriteCond %{DOCUMENT_ROOT}/aponit/dev/$1/$2\.php -f
RewriteRule ^([\w-]+)/([\w-]+)/?$ $1/$2.php [L]

RewriteCond %{DOCUMENT_ROOT}/aponit/dev/$1/$2\.php -f
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/?$ $1/$2.php?q=$3 [L,QSA]

请注意,对于所有此类 URL,GET 参数的名称将是相同的 q。在 .php 文件中,您可以使用 $_GET['q'] 来读取它。

关于php - 如何最小化 .htaccess 规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38632057/

相关文章:

PHP 字符串 '==' 在相同的字符串上返回 false

php - Laravel DB::raw() 不执行查询,但手动执行有效

apache - 带有 Apache 服务器而不是 Nginx 的 GitLab 7.2.1

regex - 将 https ://*. example.com 重定向到 https ://example. com

php - 使用范围解析运算符 (::) 将常量传递给 PHP 方法的最佳方法

php - 你能在 PHP cron 作业中运行数据库查询吗?

apache - 将带有参数的 URL 重定向到主页

mysql - index.php 未加载到 WordPress 的主文件夹中

正则表达式匹配所有数字、字母和标点符号?

.htaccess - 如果用户只使用 htaccess 输入域名,我需要在 url 中添加参数