使用Wordpress作为CMS,.htaccess文件如下所示:
RewriteEngine On # 1. ok - enables engine
RewriteBase /blog/ # 2. ?? - sets blog directory as base for the rules
RewriteRule ^index\.php$ - [L] # 3. ?? - replaces index.php by nothing in the URL
RewriteCond %{REQUEST_FILENAME} !-f # 4. ?? - checks if request contains a file name
RewriteCond %{REQUEST_FILENAME} !-d # 5. ?? - checks if request contains a directory name
RewriteRule . /blog/index.php [L] # 6. ?? --> why this single dot (1 occurrence of a single character)?
我阅读了关于mod_rewrite的大量文档(现在还在阅读中),我知道正则表达式是什么以及它们是如何工作的,我的网站工作得很好。然而,我是复制粘贴而不确定是理解。线条有??是我不确定的(我不知道第6行是什么)。
在另一个基于https://stackoverflow.com/a/20979005的文件中(这适用于我的网站):
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ # 7. ok
RewriteRule !^subfolder/ /subfolder%{REQUEST_URI} [L] # 8. ?? - if it does not contain the subfolder, add it (strange as I wanted exactly to remove it from the URL but it works)
我的问题是:
答案 0 :(得分:1)
以下是答案:
Q1。我有没有得到第1到第5行?
A1。是的,你做了
Q2。第6行究竟做了什么?
A2。它表示对于任何非空的请求(单个DOT将匹配除着陆页之外的任何内容)转发到/blog/index.php
Q3。第8行的解释是否正确?
A3。是的,这是对的。没有什么奇怪的。您希望在客户的网址中删除/subfolder/
,但是当您的网络服务器收到没有subfolder/
的请求时,您希望在内部/静默添加subfolder/
,以便您可以正确加载页面。