我对seo friendly 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]
现在,使用此规则我可以访问以下网址:
http://localhost/aponit/dev/zones/update/63
http://localhost/aponit/dev/cable-types/update/3
现在我必须创建更多此类网址!那么在这个.htaccess
规则中是否有最小化规则?
我的意思是如果我需要10个不同的网址,我必须在.htaccess
文件中添加10条规则。 e.g:
RewriteRule ^(?:another/)?another-f/(\w+)/?$ another/another-f.php?another-id=$1 [L,QSA,NC]
我想在此.htaccess
文件中为此类网址添加一条规则。
更新
在zones文件夹下的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>
要编辑表单数据,我需要这种类型的网址:
http://localhost/aponit/dev/zones/update/63
添加数据我需要这种类型的网址:
http://localhost/aponit/dev/zones/add
最后在.htaccess规则中我只需要一个规则来遵循这种类型的网址
答案 0 :(得分:1)
使用这两个通用规则而不是上述规则类型:
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]
请注意,所有此类网址的GET参数名称都相同q
。在.php
文件中,您可以使用$_GET['q']
来阅读它。
答案 1 :(得分:0)
只需使用此规则:
RewriteRule ^(.*)/(.*)/(\w+)$ /$1/$2.php?z=$3 [QSA,L,NC]
它将重写:
zones/update/63 >> /zones/update.php?z=63
cable-types/update/3 >> /cable-types/update.php?z=63
注1:这标准化了您的路径。您不再制作第一部分(zones/
vs cable-types/
可选)
注意2:您必须标准化第一个查询参数的名称。我使用上面的z
。然后,在PHP文件中,根据需要使用它。 cable-types/update.php
将使用它,就像您在
cbl
参数一样