.htaccess链接工作,但没有GET变量


.htaccess links working, but no GET variables

在我的一个网站上。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文件添加规则了?

提前感谢。

您需要关闭MultiViews选项,您也可以将一些类似的规则合并为一个:

ErrorDocument 404     /404
ErrorDocument 500     /500
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteRule ^(resources)($|/) - [L]
RewriteRule ^user/([^/]+)/?$ /users.php?user=$1 [L]
RewriteRule ^dev/([^/]+)/?$ /dev.php?type=$1 [L]
RewriteRule ^(users|settings|groups|page)/([^/]+)/?$ /$1.php?view=$2 [L,QSA,NC]
RewriteRule ^(users|groups)/('w+)/([^/]+)/?$ /$1.php?view=$2&id=$3 [L,QSA,NC]
# To internally redirect /dir/file to /dir/file.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

试一下,

RewriteEngine on
#if you want it to use for sub dir
RewriteBase /subdir/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#below for url which only have view as parameter
RewriteRule ^(['w]+)/(['w]+)$ $1.php?view=$2 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^user/([^/]*)$ users.php?user=$1
RewriteRule ^dev/([^/]*)$ dev.php?type=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/edit/([^/]*)$ /$1.php?view=edit&id=$2 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^groups/permissions/([^/]*)$ /groups.php?view=permissions.php&id=$1 [QSA,L]

也许你应该把这个文件复制到domain.com/subdir,但这不是那么好,你应该考虑使用php mvc框架,如symfony,它会顺利解决你的问题,普通php很难扩展。