.htaccess htaccess modrewrite为SEF重命名目录
我想更改directory/rooms以显示SEF的名称/gear,而无需在脚本中遍历和更改目录名。注意:目录“gear”不存在 例如,我想更改: 现场/私人/房间/新 说 现场/私人/齿轮/新 我目前的访问权限是:.htaccess htaccess modrewrite为SEF重命名目录,.htaccess,directory,rename,mask,.htaccess,Directory,Rename,Mask,我想更改directory/rooms以显示SEF的名称/gear,而无需在脚本中遍历和更改目录名。注意:目录“gear”不存在 例如,我想更改: 现场/私人/房间/新 说 现场/私人/齿轮/新 我目前的访问权限是: RewriteEngine ON RewriteCond %{THE_REQUEST} \ /(.*)/rooms([^\ ]+)? [NC] RewriteRule ^ /%1/gear%2 [L,R] RewriteRule ^(.*)/gear(/.*)?$ /$1/room
RewriteEngine ON
RewriteCond %{THE_REQUEST} \ /(.*)/rooms([^\ ]+)? [NC]
RewriteRule ^ /%1/gear%2 [L,R]
RewriteRule ^(.*)/gear(/.*)?$ /$1/rooms$2 [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?/$0 [PT,L]
它精确地将我带到我想要的目录site.com/gear/new
然而,我得到一个404错误。我相信,因为那里没有内容?我甚至试着复制文件夹/房间,并将其重命名为/gear,但仍然得到了404
当代码为:
RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?/$0 [PT,L]
#RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA]
它会将您带到site/private/rooms/new,并使用showing/index.php显示内容
你认为这可能是造成问题的原因吗?它不会显示site.com/gear/new的原因可能是因为它没有显示/index.php 试试这个
RewriteEngine ON
RewriteCond %{THE_REQUEST} \ /(.*)/rooms([^\ ]+)? [NC]
RewriteRule ^ /%1/gear%2 [L,R]
RewriteRule ^(.*)/gear(/.*)?$ /$1/rooms$2 [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?/$0 [PT,L]
你的规则不符合,因为
RewriteRule ^/rooms(.*)?$ /gear$1 [R]
- 路径从不包含前导斜杠(在
中使用.htaccess
重写规则时)。因此,
永远不会匹配/rooms
- 您的规则忽略URL路径以
开头。它们在private
和rooms
上匹配,作为第一个路径目录gear
[NC]
而不是[NC,L]
。