我的.htaccess文件设置为从URL中省略.php扩展名。例如:
mysite.com/page
mysite.com/item
mysite.com/about
阅读:
mysite.com/page.php
mysite.com/item.php
mysite.com/about.php
哪个好;但是,我使用URL的剩余部分作为参数,我想要忽略它们。例如,我想:
mysite.com/item/1234567890/a-product
阅读:
mysite.com/item.php
而不是:
mysite.com/item/1234567890/a-product.php
知道如何在.htaccess中完成此操作吗?这是我目前的.htaccess文件:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
答案 0 :(得分:0)
您可以使用某种“路由器”通过路由器文件路由所有请求。在那个路由器文件中,你可以嗅出网址的其余部分并按照你想要的那样做。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ router.php?url=$1 [PT,L,QSA]
</IfModule>
然后在router.php里面,例如:
if (isset($_GET["url"])) {
$url = $_GET["url"];
}
/ *将$ url分隔成变量,包含你的item.php文件,将$ url的其余部分传递给包含的文件* /
不确定这是否是正确的方法,但这是一种方式。
答案 1 :(得分:0)
尝试:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/([^/]+)/?
RewriteCond %{DOCUMENT_ROOT}/%1.php -f
RewriteRule ^(.*)$ %1.php [L]
这可以执行您的规则最初执行的操作以及删除第一个文件夹之后的内容。