我正在用PHP开发一个站点,并使用MAMP在我的计算机上本地运行该站点以进行测试。现在,我正在尝试清理后端区域(admin)的URL,以产生类似以下的URL:
dbContext.MyEntities
.where(s => s.TestResult == "Pass") (store count here, somehow)
//How to Group here - to get pass/fail count ?
这是我的localhost/admin/products/read/1
根目录:
.htaccess
我也在删除上面代码的最后一行的同时尝试了RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)$ $1.php [NC]
RewriteRule ^admin/products/read/([0-9]+)/?$ admin/products/read.php?id=$1 [NC]
:
RewriteRule
文件夹结构:
RewriteRule ^admin/(products|users|companies)/(read|update|delete)/(.*)$ /$1?id=$2 [NC,L]
尝试使用以下网址时,Chrome和Safari抛出404找不到
htdocs
- admin
- products
- read.php
- update.php
- delete.php
- index.php
- users
- ...
- companies
- ...
index.php
感谢所有帮助!
更新18/08/18
在MrWhite的帮助下,我从他的回答中写下了这些内容,以扩大我的localhost/admin/products/read/1
localhost/admin/products/read/1/
etc..
文件中的范围:
.htaccess
哪个让我思考,我是否可以仅通过检查查询RewriteRule ^admin/(.*)/(.*)/([0-9]+)/?$ admin/$1/$2.php?id=$3 [L]
然后重写来保持配置文件的整洁?
答案 0 :(得分:1)
您的指令顺序错误。您还缺少一些L
标志。并且您需要确保未启用MultiViews
。
请尝试以下操作:
Options -MultiViews
RewriteEngine On
RewriteRule ^admin/products/read/([0-9]+)/?$ admin/products/read.php?id=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)$ $1.php [L]
相反,通过使用伪指令,它将在{-{1}}扩展名后附加到URL路径,并且永远不会与第二条伪指令匹配。
此外,指令匹配后,您不希望继续处理,因此需要.php
(L
)标志。