我是URL重写的初学者,我有一个问题。以下是我的规则的一部分:
RewriteRule ^admin/page1/?$ admin/page1.php
RewriteRule ^admin/page2/?$ admin/page2.php
RewriteRule ^admin/page3/?$ admin/page3.php
<more similar lines>
所有这些页面(x)都是不同的php文件。 现在重写工作正常,但是可以缩短所有这些吗? 例如:
RewriteRule ^admin/(.*)/?$ admin/$1\(.php) (or whatever...)
感谢您的回答:)
答案 0 :(得分:0)
你可以这样试试 -
RewriteRule ^(.*)/(.*)/$ admin/$2.php?{QUERY_STRING}
代码未经过测试。
答案 1 :(得分:0)
是的,你会这样做:
RewriteRule ^admin/(.*)/?$ admin/$1.php
然而,这将匹配admin//
并将其更改为admin/.php
,这是我确定不你想要的。因此,请使用+
代替*
:
RewriteRule ^admin/(.+)/?$ admin/$1.php
请注意,您拥有的规则也会匹配admin/folderX/pageX
。如果您不想要此行为,请尝试:
RewriteRule ^admin/([^/]+)/?$ admin/$1.php
答案 2 :(得分:0)
这个非常好
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
你把它放在你的.htaccess然后如果你的index.php中的URL是例如/ projects /,你将在参数$ _GET ['url']中收到它..那么我建议你使用explode ('/',$ _GET ['url']);
这是最简单和最基本的URL重写,非常适合任何事情。
如果指定的URL是文件系统中的当前文件,它将为您提供文件,否则它将为您的index.php代码提供GET参数中的URL