1

我想重写一些动态页面的网址,其中数据从像“这是一个链接”slu taken的数据库中获取。htaccess动态URL重写与.html扩展基于URL选择

 Options +FollowSymlinks 
     RewriteEngine On 

     RewriteBase /testweb/ 

     RewriteCond %{REQUEST_FILENAME} !-d [NC] 
     RewriteCond %{REQUEST_FILENAME} !-f [NC] 
     RewriteRule ^(.*)$ faq_pages.php?page=$1 [QSA,L] 

它正常工作与http://www.test.com/testweb/this-is-a-link

但我需要改变任何基于链路上的重写规则如下点击。

http://www.test.com/testweb/faq/this-is-a-link, 'testweb /消息/这个-IS-另一个链路', '/ testweb /证明书/测试链路'

的 “faq_pages.php” 在上面的重写规则应改为“news_pages.php”。我如何动态获取它,以便我可以使用相同htaccess的每个页面,或者如何在htaccess中检查并重写值到不同的页面。

也请指教我如何纠正下面的代码。

 Options +FollowSymlinks 
     RewriteEngine on 
     RewriteRule ^(.*)\.html$ faq_pages.php?page=$1 

我需要显示HTML的URL像“/testweb/this-is-a-link.html”或“/testweb/faq/this-is-a-link.html”

地址栏

编辑:在Jon Lin的帮助下,我更新了我的代码,如下所示。

 Options +FollowSymlinks 
     RewriteEngine On 

     RewriteBase /testweb/ 

     RewriteCond %{REQUEST_FILENAME} !-d [NC] 
     RewriteCond %{REQUEST_FILENAME} !-f [NC] 
     RewriteRule ^faq/(.*?)/?$ faq_pages.php?page=$1 [QSA] 

现在都低于条件下工作: /testweb/faq/another-faq-test.html,
/testweb/faq/another-faq-test.html/

正如我不没有名称为'faq'的任何子文件夹,根文件夹中的模板文件(images/css/js等)未加载。 我该如何解决它?

感谢你

回答

0

你在找这样的吗?

Options +FollowSymlinks 
    RewriteEngine On 

    RewriteBase /testweb/ 

    RewriteCond %{REQUEST_FILENAME} !-d [NC] 
    RewriteCond %{REQUEST_FILENAME} !-f [NC] 
    RewriteRule ^faq/(.*)$ faq_pages.php?page=$1 [QSA,L] 

    RewriteCond %{REQUEST_FILENAME} !-d [NC] 
    RewriteCond %{REQUEST_FILENAME} !-f [NC] 
    RewriteRule ^news/(.*)$ news_pages.php?page=$1 [QSA,L] 
+0

嗨,谢谢你的回答。我已经使用RewriteRule^faq /(.*)/$ faq_pages.php?id = $ 1 [QSA]和RewriteRule^faq /(.*)$ faq_pages.php?id = $ 1 [QSA]来重写testweb/faq/another -faq-test.html /和testweb/faq/another-faq-test.html。请告诉我,如果这是正确的做法。另外请帮我忽略/重写'faq'文件夹,因为目前的CSS或图像没有加载,因为URL中有'faq /'。非常感谢 – user2669827

+0

@ user2669827而不是使用2个规则,只需在'/'之后加一个'?'即可。如果你在'/ faq /'中请求一个静态文件,那么2个重写条件会阻止应用该规则 –

+0

嗨,再次感谢。 RewriteRule^faq /(.*)/?$ faq_pages.php?id = $ 1 [QSA]不适用于/testweb/faq/another-faq-test.html/。我只使用'faq /'和'news /'来检查url并重写到不同的页面。我没有任何有这些名字的文件夹。如何忽略它或指定它们不是目录..现在URL查找文件夹'faq' – user2669827