所以经过大量测试,我已经开始解决我的问题,但仍然无法进行重写。
这就是我的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