国防部重写与规则不起作用的斗争



所以经过大量测试,我已经开始解决我的问题,但仍然无法进行重写。

这就是我的htaccess文件现在的样子。

RewriteEngine On
RewriteRule ^schemdetail/id/(.*)$ schematicdetails?id=$1 [L,NC]
RewriteCond %{SERVER_PORT} !=443
RewriteRule ^(.*)$ https://abfielder.com/$1 [R=301,L]
DirectoryIndex index.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule (.*) $1.php [L]

规则1是我在方面遇到的问题

RewriteRule ^schemdetail/id/(.*)$ schematicdetails?id=$1 [L,NC]

我现在的理解是,如果我在浏览器中键入此url

https://abfielder.com/schemdetail/id/158

我应该得到

https://abfielder.com/schematicdetails?id=158

这个的测试

https://htaccess.madewithlove.com/

告诉我的规则没问题

规则2和3运行良好。

然而,当我尝试访问时

https://abfielder.com/schemdetail/id/158

我基本上得到了页面未找到的错误。

好吧,我想我终于为其他有mod重写问题的人解决了这个问题,他们希望有一个规则来删除文件扩展名和其他重写,顺序很重要。最后,如果你在共享主机类型的东西上,你可能还需要设置重写基础。这就是我的htaccess文件现在的样子。

RewriteEngine On
RewriteBase /
RewriteRule ^schemdetail/id/(.*)$ schematicdetails?id=$1 [L,NC]
RewriteCond %{SERVER_PORT} !=443
RewriteRule ^(.*)$ https://abfielder.com/$1 [R=301,L]
DirectoryIndex index.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule (.*) $1.php [L]

这使我可以在没有.php扩展名的情况下获得url。

它还允许

schemdetail/id/100要翻译成schematicdetails?id=100

最新更新