我有以下用于 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/