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

时间:2016-09-21 09:32:17

标签: php regex apache .htaccess mod-rewrite

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

提前谢谢。

3 个答案:

答案 0 :(得分:1)

尝试这样,

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]

答案 1 :(得分:1)

您需要关闭$('#slider').nivoSlider({effect:'fade'}) 选项,您还可以将一些类似的规则合并为一个:

MultiViews

答案 2 :(得分:0)

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