【问题标题】:.htaccess rewrite and remove .php on only a few files.htaccess 仅在少数文件上重写和删除 .php
【发布时间】:2014-03-24 20:30:35
【问题描述】:

我正在尝试将所有 .php 文件扩展名重写为 /

我让它用这段代码工作:

重写引擎开启

# hide .php extension snippet
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1/ [R,L]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

但是,它会破坏与数据库对话的管理页面,例如具有代码并使用 URL 中断的页面:

create-ticket.php?device=XBOX+360

我需要将扩展​​程序放在几页上...

有没有办法可以使用上面的代码,但只能用于特定文件,而不是每个以 .php 结尾的文件?

谢谢, -O

【问题讨论】:

  • 您可以排除某些文件或文件夹,或者使用查询参数来传递页面,以便建立要查找的模式。

标签: php regex apache .htaccess mod-rewrite


【解决方案1】:

你可以这样排除:

RewriteEngine On

# hide .php extension snippet
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} !/(create-ticket|admin)\.php [NC]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1/ [R,L]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

【讨论】:

    猜你喜欢
    • 2018-05-25
    • 2019-04-14
    • 2015-02-25
    • 1970-01-01
    • 2015-01-15
    • 2016-01-02
    • 2015-03-14
    • 1970-01-01
    • 2011-08-29
    相关资源
    最近更新 更多