【问题标题】:htaccess mod-rewrite ~ how to modify url from /pages/pagename.cfm to /pagename/htaccess mod-rewrite ~ 如何将 url 从 /pages/pagename.cfm 修改为 /pagename/
【发布时间】:2014-12-18 18:55:35
【问题描述】:

我必须对网站进行网站结构清理... http://dev.514hebergement.com/

寻找 htaccess 指令将所有页面 url 重写为更友好的 url 结构,而无需移动文件夹层次结构中的实际页面。

所以 /pages/pagename.cfm 中的每个页面

将其地址重写为 /pagename/

并同时响应 /pagename/ 和 /pages/pagename.cfm url。

请记住,我需要页面名称是动态的,而不是在 htaccess 指令中硬编码。

非常感谢!

我当前的 htaccess 位于网站的根目录:

Options +FollowSymLinks
RewriteEngine on    

# DROP THE INDEX FILENAME #
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.cfm($|\ |\?)
RewriteRule ^ /%1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)INDEX\.CFM($|\ |\?)
RewriteRule ^ /%1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)INDEX\.cfm($|\ |\?)
RewriteRule ^ /%1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.CFM($|\ |\?)
RewriteRule ^ /%1 [R=301,L]

# v3 PAGES #
RedirectPermanent /Hebergement-Internet-Montreal/ /
RedirectPermanent /Hebergement-Web-Montreal/ /
RedirectPermanent /Hebergement-Web-Montreal/commander-hebergement.cfm /commander.cfm
RedirectPermanent /hebergement-php.cfm /forfaits-linux.cfm
RedirectPermanent /Hebergement-Web-Montreal/faq.cfm /faq.cfm
RedirectPermanent /Hebergement-Web-Montreal/termes.cfm /termes.cfm
RedirectPermanent /Hebergement-Internet-Montreal/contact.cfm /contact.cfm

# SOLUTIONS-TECHNOLOGIES #
RedirectPermanent /hebergement-linux.cfm /hebergement-web-linux.cfm
RedirectPermanent /hebergement-coldfusion.cfm /hebergement-web-coldfusion.cfm
RedirectPermanent /hebergement-windows.cfm /hebergement-web-windows.cfm
RedirectPermanent /hebergement-mysql.cfm /hebergement-web-mysql.cfm
RedirectPermanent /hebergement-perl.cfm /hebergement-web-perl.cfm
RedirectPermanent /hebergement-php.cfm /hebergement-web-php.cfm


# ARCHIVED PAGES #
RedirectPermanent /Hebergement-Internet-Montreal/promotions.cfm /
RedirectPermanent /promotions.cfm /
RedirectPermanent /hebergement-asp.cfm /forfaits-windows.cfm

我在地址栏中输入的确切地址是: http://dev.514hebergement.com/pages/hebergement-web-montreal-qualite.cfm

导致 url 重写为: /pages/hebergement-web-montreal-qualite

我想要这样: /hebergement-web-montreal-qualite/

好的,在重写后的 url 中添加了斜杠 ->重写规则 ^ /%1/ [R=302,L,NE]

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} \s/+pages/(.+?)\.cfm[\s?] [NC]
RewriteRule ^ /%1/ [R=302,L,NE]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/pages/$1\.cfm -f [NC]
RewriteRule ^(.+?)/?$ pages/$1.cfm [L]

所以最后一步是将根页面重定向到 /pages/pagename.cfm 文件...

这可以是动态的还是我必须独立列出所有页面?

【问题讨论】:

    标签: .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    您可以在DOCUMENT_ROOT/.htaccess 文件中使用此代码:

    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{THE_REQUEST} \s/+pages/(.+?)\.cfm[\s?] [NC]
    RewriteRule ^ /%1/ [R=302,L,NE]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{DOCUMENT_ROOT}/pages/$1\.cfm -f [NC]
    RewriteRule ^(.+?)/?$ pages/$1.cfm [L]
    

    【讨论】:

    • 感谢您的快速回复...不幸的是它没有按规定工作...对 /pages/pagename.cfm 的调用被重写为 /pages/pagename,我希望它重写为 /pagename/ - 但实际调用 /pages/pagename.cfm 页面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多