Regex mod_重写以将日期传递到文件

Regex mod_重写以将日期传递到文件,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,我有一个文件http://sub.domain.com/apush/noteGetter.php以d-m-y的格式通过noteGetter.php?date=d-m-y处理日期。例如,我将使用2017年1月13日。我希望url是http://sub.domain.com/apush/notes/2017/01/13。我知道这可以通过htaccess使用mod_重写来完成,但我对正则表达式几乎没有经验,对htaccess更是没有经验。我需要添加哪些规则和条件才能重写此URL 更新 当前“apush

我有一个文件
http://sub.domain.com/apush/noteGetter.php
d-m-y
的格式通过
noteGetter.php?date=d-m-y
处理日期。例如,我将使用2017年1月13日。我希望url是
http://sub.domain.com/apush/notes/2017/01/13
。我知道这可以通过htaccess使用mod_重写来完成,但我对正则表达式几乎没有经验,对htaccess更是没有经验。我需要添加哪些规则和条件才能重写此URL

更新

当前“apush”目录
.htaccess

RewriteEngine on
RewriteRule ^notes/(\d{4})/(\d{2})/(\d{2})$ "noteGetter.php?date=$3-$2-$1"
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)$ $1.php [L]
DirectoryIndex home.php
ErrorDocument 404 'https://www.domain.com/404'
AuthType Basic
AuthUserFile /home/tsenter/sub.domain.com/.htpasswd
AuthName "Members Area"
require valid-user
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^notes/(\d{4})/(\d{2})/(\d{2})$ "noteGetter.php?date=$3-$2-$1"
RewriteRule ^([^\.]+)$ $1.php [NC,L]
DirectoryIndex home.php
ErrorDocument 404 'https://www.domain.com/404'
RewriteEngine on
RewriteRule ^notes/(\d{4})/(\d{2})/(\d{2})$ "noteGetter.php?date=$3-$2-$1"
AuthType Basic
AuthUserFile /home/tsenter/sub.domain.com/.htpasswd
AuthName "Members Area"
require valid-user
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
DirectoryIndex home.php
ErrorDocument 404 'https://www.domain.com/404'
当前“根”目录
.htaccess

RewriteEngine on
RewriteRule ^notes/(\d{4})/(\d{2})/(\d{2})$ "noteGetter.php?date=$3-$2-$1"
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)$ $1.php [L]
DirectoryIndex home.php
ErrorDocument 404 'https://www.domain.com/404'
AuthType Basic
AuthUserFile /home/tsenter/sub.domain.com/.htpasswd
AuthName "Members Area"
require valid-user
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^notes/(\d{4})/(\d{2})/(\d{2})$ "noteGetter.php?date=$3-$2-$1"
RewriteRule ^([^\.]+)$ $1.php [NC,L]
DirectoryIndex home.php
ErrorDocument 404 'https://www.domain.com/404'
RewriteEngine on
RewriteRule ^notes/(\d{4})/(\d{2})/(\d{2})$ "noteGetter.php?date=$3-$2-$1"
AuthType Basic
AuthUserFile /home/tsenter/sub.domain.com/.htpasswd
AuthName "Members Area"
require valid-user
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
DirectoryIndex home.php
ErrorDocument 404 'https://www.domain.com/404'
更新2

新的“apush”目录
.htaccess

RewriteEngine on
RewriteRule ^notes/(\d{4})/(\d{2})/(\d{2})$ "noteGetter.php?date=$3-$2-$1"
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)$ $1.php [L]
DirectoryIndex home.php
ErrorDocument 404 'https://www.domain.com/404'
AuthType Basic
AuthUserFile /home/tsenter/sub.domain.com/.htpasswd
AuthName "Members Area"
require valid-user
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^notes/(\d{4})/(\d{2})/(\d{2})$ "noteGetter.php?date=$3-$2-$1"
RewriteRule ^([^\.]+)$ $1.php [NC,L]
DirectoryIndex home.php
ErrorDocument 404 'https://www.domain.com/404'
RewriteEngine on
RewriteRule ^notes/(\d{4})/(\d{2})/(\d{2})$ "noteGetter.php?date=$3-$2-$1"
AuthType Basic
AuthUserFile /home/tsenter/sub.domain.com/.htpasswd
AuthName "Members Area"
require valid-user
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
DirectoryIndex home.php
ErrorDocument 404 'https://www.domain.com/404'
新的“根”目录
.htaccess

RewriteEngine on
RewriteRule ^notes/(\d{4})/(\d{2})/(\d{2})$ "noteGetter.php?date=$3-$2-$1"
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)$ $1.php [L]
DirectoryIndex home.php
ErrorDocument 404 'https://www.domain.com/404'
AuthType Basic
AuthUserFile /home/tsenter/sub.domain.com/.htpasswd
AuthName "Members Area"
require valid-user
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^notes/(\d{4})/(\d{2})/(\d{2})$ "noteGetter.php?date=$3-$2-$1"
RewriteRule ^([^\.]+)$ $1.php [NC,L]
DirectoryIndex home.php
ErrorDocument 404 'https://www.domain.com/404'
RewriteEngine on
RewriteRule ^notes/(\d{4})/(\d{2})/(\d{2})$ "noteGetter.php?date=$3-$2-$1"
AuthType Basic
AuthUserFile /home/tsenter/sub.domain.com/.htpasswd
AuthName "Members Area"
require valid-user
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
DirectoryIndex home.php
ErrorDocument 404 'https://www.domain.com/404'

我从讨论中了解到,您希望将规则放置在
apush
目录中的
.htaccess
文件中。您需要在
apush
.htaccess
文件中使用此文件:

RewriteEngine on
RewriteRule ^notes/(\d{4})/(\d{2})/(\d{2})$ "noteGetter.php?date=$3-$2-$1"

这是一个简单的匹配,任何四个数字表示年,任何两个数字表示月,任何两个数字表示日。在脚本中进行验证最简单,这里有一个简单的正则表达式。

对于我正在做的事情,我有一个域
sub.domain.com/apush/notes/y/m/d
,该域应该重写为
sub.domain.com/apush/noteGetter?date=m-d-y
,出于某种原因,这对我不起作用。
apush
目录的当前
.htaccess
文件已添加到问题中。我更新了我的答案,在
apush
中插入了您的
.htaccess
文件。我感谢您的回答,但出于某种原因,它仍将我重定向到404页面。我正在尝试
sub.domain.com/apush/notes/2017/01/07
,它将我重定向到
domain.com/404
。我已经验证了
sub.domain.com/apush/noteGetter.php
上的文件是否有效。我确实在每个目录中都有一个
.htaccess
,所以我不知道这是否是问题所在。是的,可能是。请发布您的root
.htaccess
文件,因为这是另一个会影响此操作的文件。这就是问题所在,代码是为您的apush.htaccess编写的,而不是您的root文件,因为您说过要将其放在那里。将代码放在apush.htaccess中的我的答案中,并从根答案中取出。