2

我是 URL 重写的初学者,我有一个问题。这是我的规则的一部分:

RewriteRule ^admin/page1/?$ admin/page1.php
RewriteRule ^admin/page2/?$ admin/page2.php
RewriteRule ^admin/page3/?$ admin/page3.php
<more similar lines>

所有这些 page(x) 都是不同的 php 文件。现在重写工作正常,但是有可能缩短这一切吗?例如:

RewriteRule ^admin/(.*)/?$ admin/$1\(.php) (or whatever...)

感谢您的回答:)

4

3 回答 3

0

你可以这样试试——

RewriteRule ^(.*)/(.*)/$ admin/$2.php?{QUERY_STRING}

代码未经测试。

于 2013-01-03T15:10:48.300 回答
0

是的,你会这样做:

RewriteRule ^admin/(.*)/?$ admin/$1.php

但是,这将匹配admin//并将其更改admin/.php为我确定不是您想要的。所以,使用 a+而不是 a *

RewriteRule ^admin/(.+)/?$ admin/$1.php

请注意,您拥有的规则也将匹配admin/folderX/pageX。如果您不想要这种行为,请尝试:

RewriteRule ^admin/([^/]+)/?$ admin/$1.php
于 2013-01-03T15:12:43.720 回答
0

这个真的很好看

<IfModule mod_rewrite.c>                                                                                                                                                                                                                     
    RewriteEngine On                                                                                                                                                                                                                         
    RewriteCond %{REQUEST_FILENAME} !-d                                                                                                                                                                                                      
    RewriteCond %{REQUEST_FILENAME} !-f                                                                                                                                                                                                      
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]                                                                                                                                                                                              
</IfModule>

你把它放在你的 .htaccess 中,然后如果 URL 是,例如 /projects/ ,在你的 index.php 中,你会在参数 $_GET['url'] 中收到它。然后我建议你使用 explode('/ ', $_GET['url']);

这是最简单和最基本的 URL 重写,几乎适用于任何事情。

如果指定的 URL 是文件系统中的现有文件,它将为您提供该文件,否则它将在您的 index.php 代码的 GET 参数中提供 URL

于 2013-01-03T21:09:57.897 回答