当前的活动网址系统如下:
http://example.com/dashboard/pages.php
http://example.com/dashboard/page.php?id=10
所以我想要使用相同的网址:
http://example.com/dashboard/pages
http://example.com/dashboard/page/id/10
http://example.com/dashboard指向/ var / www / html / dashboard
当我使用子域名时,我希望如果我使用的话,可以访问相同的URL:
http://subdomain.example.com/pages
http://subdomain.example.com/page/id/10
然后活动网址系统就像:
http://subdomain.example.com/pages.php
http://subdomain.example.com/page.php?id=10
http://subdomain.example.com指向/ var / www / html / dashboard
所以域和子域的根目录不一样。
我只想要它用于php文件。我不希望它影响css或js文件夹结构,因为我正在使用相对路径。
任何人都可以帮助确定htaccess内容应该是什么?我在正则表达式处理方面非常糟糕。
答案 0 :(得分:1)
试试这个
对于htaccess:
AddDefaultCharset UTF-8
Options -Indexes
RewriteEngine on
# Usually it RewriteBase is just '/', but
# replace it with your subdirectory path
# For root domain following line
RewriteBase /
# For sub directory following line
RewriteRule ^/?([-a-zA-Z0-9_+]+)/?([-a-zA-Z0-9_+]+)/?([0-9]+)/?$ $1.php?$2=$3 [L]
for php中的网址
$re = "/\\.php\\??|=/m";
$str = "http://example.com/dashboard/pages.php\nhttp://example.com/dashboard/page.php?id=10";
$subst = "/";
$result = preg_replace($re, $subst, $str);
<强>输出:强>
http://example.com/dashboard/pages/
http://example.com/dashboard/page/id/10
答案 1 :(得分:1)
尝试将这些重写规则添加到文档根目录
中的htaccess文件中Options -Multiviews FollowSymLinks
RewriteEngine On
RewriteCond %{THE_REQUEST} \ /+dashboard/([^/]+)\.php(\?|\ |$)
RewriteRule ^ /dashboard/%1 [L,R=301]
RewriteCond %{THE_REQUEST} \ /+dashboard/([^/]+)\.php\?([^=]+)=([^&\ ]+)
RewriteRule ^ /dashboard/%1/%2/%3 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/dashboard/$1.php -f
RewriteRule ^dashboard/([^/]+)$ /dashboard/$1.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/dashboard/$1.php -f
RewriteRule ^dashboard/([^/]+)/([^/]+)/([^/]+)$ /dashboard/$1.php?$2=$3 [L,QSA]
然后,为了确保您的所有相关链接(像CSS这样的内容)不会因为您现在拥有完全不同的相对网址基础而被破坏,请将其添加到您网页的标题中:< / p>
<base href="/dashboard/" />
或无论基数应该是什么。
答案 2 :(得分:0)
这将完成工作,
substr(strrchr(rtrim($url, '/'), '/'), 1)
它将获取页码,即10。
这也有助于你,
$url='http://example.com/dashboard/page/id/10';
if(preg_match("/\/(\d+)$/",$url,$matches))
{
$end=$matches[1];
}
两个代码的输出将是:
10
这是我尝试使用online tool,