Apache 重写url重用文件名作为其基本参数
好吧,标题的措辞有点困难,但我对它的工作原理很感兴趣 假设我在根文件夹上有这个.htaccessApache 重写url重用文件名作为其基本参数,apache,.htaccess,url-routing,Apache,.htaccess,Url Routing,好吧,标题的措辞有点困难,但我对它的工作原理很感兴趣 假设我在根文件夹上有这个.htaccess RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.php [NC,L] 比如说 我有这个url,它包含任何内容 www.myurl.com/foo 如果我转到另一页,它会像 www.myurl.com/foo/bar 也就是说,一旦我重定向到其他页面,我将使用foo作为它们的基础 所以我
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
比如说
我有这个url,它包含任何内容
www.myurl.com/foo
如果我转到另一页,它会像
www.myurl.com/foo/bar
也就是说,一旦我重定向到其他页面,我将使用foo
作为它们的基础
所以我的根文件夹结构是
index.php
foo.php
bar.php
因此,如果www.myurl.com/foo
我正在打开foo.php
,但是如果我访问www.myurl.com/foo/bar
我正在打开bar.php
,文件名的基础是foo.php
。逻辑上认为这是错误的
但有没有办法做到这一点
真正想要的结果是
www.myurl.com/campetings
如果我转到活动的子页面,它将是
www.myurl.com/magnetics/create
任何帮助都将不胜感激。为了实现这一点,您需要一个路由器;Apache重写工具不适合单独处理此问题。通常,您使用一个前端控制器(通常称为index.php),所有内容都将重写到该控制器,并将整个url作为参数传递。然后,前端控制器启动路由器,路由器启动正确的控制器来处理请求 然后,您的.htaccess看起来像:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
重新启动发动机
重写cond%{REQUEST_FILENAME}-F
重写规则^(.*)$index.php[QSA,L]
请看,并阅读的第一章,了解这一切是如何运作的。无论如何,感谢您的回答@Bryan Agee 我发现了一个关于URL重写的很棒的网站,特别是对于那些甚至不知道它是如何工作的人,包括我在内 对于任何感兴趣的人,这里是它的链接 这很容易理解 关于我问题的解决方案,在这里
RewriteEngine On
RewriteRule ^campaigns/?$ src/campaigns/index.php [NC]
RewriteRule ^campaigns/create/?$ src/campaigns/create.php [NC]
如果我想把参数放在链接上
#RewriteRule ^campaigns/create/(.+)$ src/campaigns/create.php?cid=$1 [L]
如需进一步了解,请访问上面的链接:D