mod_rewrite - .htaccess需要帮助

时间:2017-09-21 05:33:40

标签: apache .htaccess mod-rewrite

我正在尝试配置.htaccess文件以执行以下操作:

  1. 如果没有索引文件,则阻止目录列表
  2. 重写所有要求转到https
  3. 的请求
  4. 剥离www并重新路由到https://example.com
  5. 从文件中删除.php扩展名:
    a)https://example.com/contact应在内部路由到https://example.com/contact.php
    b)https://example.com/phpfile/1234应在内部路由到https://example.com/phpfile.php?id=1234
    c)我还需要一种方法在一些页面上重新路由2个甚至3个变量,如: https://example.com/otherphpfile.php?param1=101&param2=xxxx
  6. 这是我到目前为止所做的:

    Options -Indexes
    RewriteEngine On
    
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    
    RewriteCond %{HTTP_HOST} ^www.example.com [NC]
    RewriteRule (.*) https://example.com%{REQUEST_URI} [L,R=301,NC]
    
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]
    

    我覆盖了1,2,3,4a ......需要一种优雅的4b和4c方式,它不受特定文件/路径的约束。它需要处理任何可以接受一个或多个参数的php文件。

    非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

对于4b,请用作

RewriteRule ^phpfile/([^/]*)$ /phpfile.php?id=$1 [L]

Example :
Original URL : https://example.com/phpfile.php?id=123
Rewrite URL : https://example.com/phpfile/123

对于4c,请用作

RewriteRule ^otherphpfile/([^/]*)/([^/]*)$ /otherphpfile.php?param1=$1&param2=$2 [L]

Example :
Original URL : https://example.com/otherphpfile.php?param1=1234&param2=abcd
Rewrite URL : https://example.com/otherphpfile/1234/abcd