【发布时间】:2016-09-21 09:32:17
【问题描述】:
在我的一个网站上,.htaccess 用于链接,但 php 文件未检测到 GET 方法。
我的 .htaccess
ErrorDocument 404 /404
ErrorDocument 500 /500
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteRule ^(resources)($|/) - [L]
RewriteRule ^user/([^/]*)$ /users.php?user=$1 [L]
RewriteRule ^dev/([^/]*)$ /dev.php?type=$1 [L]
RewriteRule ^users/([^/]*)$ /users.php?view=$1 [L]
RewriteRule ^users/edit/([^/]*)$ /users.php?view=edit&id=$1 [L]
RewriteRule ^settings/([^/]*)$ /settings.php?view=$1 [L]
RewriteRule ^groups/([^/]*)$ /groups.php?view=$1 [L]
RewriteRule ^groups/edit/([^/]*)$ /groups.php?view=edit&id=$1 [L]
RewriteRule ^groups/permissions/([^/]*)$ /groups.php?view=permissions.php&id=$1 [L]
RewriteRule ^page/([^/]*)$ /page.php?view=$1 [L]
这在 domain.com 上对我有用,但在 domain.com/subdir 上不再适用
不仅如此,难道没有更好的方法来处理 get 请求重写,因此我不必为每个处理 GET 请求的 php 文件添加规则?
提前谢谢你。
【问题讨论】:
-
您可以将所有内容重写为
index.php,并为您要使用的控制器和操作添加其他变量。 -
谢谢@Bert,但这对我不起作用。 Jeroen 感谢您与我一起思考,我将制定一个关于如何实现这一目标的计划
-
@dream_machine 该问题是关于在重写后引入 GET 变量。据我了解,这个问题是关于 preserving 获取变量。
-
当然,您的规则只适用于以 user/、dev/ 等开头的 URL。您如何将其扩展到子目录?我假设您希望支持
domain.com/subdir/user/…形式的 URL。可能扩展捕获子目录的规则就足够了。
标签: php regex apache .htaccess mod-rewrite