我已经剪切并粘贴了很多.htaccess文件,但我的手指却变成了蓝色。我尝试的最后几个解决方案将所有链接重定向到index.php,但我不希望这样做。由于我不太了解自己在做什么,所以我不知道该如何解决。我是网页设计师,而不是程序员,但我更喜欢干净的网址。因此,我需要执行以下操作:
我当前的.htaccess如下:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
我的主机提供免费的SSL,并告诉我放置上面的代码以将www和http重定向到https,所以我认为我已经设置为#1。现在,我需要弄清楚如何实现/集成#2,#3和#4。
我在How can I make all my urls extensionless, without trailing slash. And redirect the .php and trailing slash to none?和How to redirect all my urls with no extension to end with .php以及其他许多地方都尝试过解决方案,但是没有任何东西可以满足我的需求。
答案 0 :(得分:1)
我花了10个小时,稍作休息,但我想我已经知道了。到目前为止,它似乎肯定可以正常工作。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteRule ^account/content$ content.php [NC,L]
RewriteRule ^account/email-reset$ email-reset.php [NC,L]
RewriteRule ^account/pwd-reset$ pwd-reset.php [NC,L]
RewriteRule ^view/(\d+)$ view.php?qdetailsid=$1 [NC,L]
RewriteRule ^edit/(\d+)$ edit.php?qdetailsid=$1 [NC,L]
RewriteRule ^delete/(\d+)$ delete.php?qdetailsid=$1 [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+) $1.php [NC,L]
</IfModule>