相关疑难解决方法(0)

使用.htaccess删除.php扩展名

是的,我已阅读Apache手册并在此搜索.出于某种原因,我根本无法让这个工作.我最接近的是删除扩展名,但它指向根目录.我希望这只是在包含该.htaccess文件的目录中工作.

我需要对.htaccess文件做三件事.

  1. 我需要它来删除.php

    一个.我有几个页面使用选项卡,URL看起来像page.php #tab - 这可能吗?

    湾 我有一个页面使用附加到URL的会话ID,以确保您来自正确的地方,www.domain.com/download-software.php?abcdefg.

这可能吗?另外,在执行此操作时,是否需要从头文件导航包含文件中的链接中删除".php"?应该IE "<a href="support.php">support</a>" be <a href="support">support</a>?

  1. 我希望它在每个URL之前强制使用"www",所以它不是domain.com,但是www.domain.com/page.
  2. 我想从页面中删除所有尾部斜杠.

我会继续寻找,尝试等等.会在子目录中导致任何问题吗?

.htaccess

92
推荐指数
10
解决办法
21万
查看次数

Laravel 5删除尾部斜杠时的不良行为

我在mywebsite.com/laravel/下创建了一个Laravel项目.当我去mywebsite.com/laravel/test时,一切正常,但是当我访问mywebsite.com/laravel/test/时,我被重定向到mywebsite.com/test.

我有文件的index.php的.htaccess在我的/ laravel目录.这是我的.htaccess文件:

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes If Not A Folder...
RewriteBase /laravel
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Run Code Online (Sandbox Code Playgroud)

我不知道为什么RewriteBase不起作用.我试过/ laravel,/ laravel /laravel ; 没有用.

我的routes.php文件

<?php
Route::get('/test/{name?}', 'MainController@index');

Route::group(['middleware' => ['web']], function () {
    // …
Run Code Online (Sandbox Code Playgroud)

php laravel

7
推荐指数
1
解决办法
3289
查看次数

Next.js SSG 的正确 .htaccess 配置

NextJS 导出一个静态站点,结构如下:


|-- index.html
|-- article.html
|-- tag.html
|-- article
|   |-- somearticle.html
|   \-- anotherarticle.html
\-- tag
    |-- tag1.html
    \-- tag2.html
Run Code Online (Sandbox Code Playgroud)

我正在使用 .htaccess 文件来隐藏 .html 扩展名:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
Run Code Online (Sandbox Code Playgroud)

一切正常,除了:

  • 如果我点击一个链接,domain/article它会显示 article.html 页面,但我的地址栏显示domain/article<--Good。
  • 如果我刷新,我将被发送到地址:(domain/article/注意尾部斜杠),其中列出了文章目录的内容 <--Bad(与标签相同)
  • 同样,手动输入domain/article将我带到domain/article/而不是在article.html没有.html扩展名的情况下显示。

所以...

  • 我该如何解决?
  • 这是 .htaccess 问题吗?
  • nextjs 配置问题?
  • (NextJSarticle\index.html在根目录下创建一个而不是一个文件不是更好吗?)

exportTrailingSlash

我尝试使用exportTrailingSlash似乎相关的方法,但这产生了其他问题,例如在我所有链接的末尾总是有一个斜杠:

例如:如果我去domain/article/somearticle点击刷新,一些东西(.httaccess?)/在最后添加一个给我domain/article/somearticle/不可怕,只是不是很干净和不一致...... …

apache .htaccess mod-rewrite next.js

7
推荐指数
1
解决办法
1562
查看次数

从站点中的所有URL中删除尾部斜杠

我对整个.htaccess事情都很陌生,我一直在尝试修改它,这样我的链接就不会在各自的URL末尾有斜杠.我的网站是filmblurb.org.

Wordpress开始和结束的.htaccess代码如下所示:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
Run Code Online (Sandbox Code Playgroud)

如果有人能够指导我如何解决这个问题,我将不胜感激.谢谢.

.htaccess trailing-slash

5
推荐指数
1
解决办法
2万
查看次数

如何删除 php 扩展并将扩展重定向到无扩展形式

我怎样才能在我的 htaccess 中拥有这个:

/page.php => redirects to /page
/page => shows the page.php
/index => redirects to root
Run Code Online (Sandbox Code Playgroud)

以及如何从所有 URL(特别是根 URL)中删除尾部斜杠?

虽然我对 Apache 配置不太熟悉,但我可以找到这些代码:

# To remove .php extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

# To remove trailing slashes
RewriteRule ^(.*)/$ /$1 [L,R=301]

# To redirect /index to root (not sure if it works correctly)
RewriteCond %{THE_REQUEST} ^.*/index
RewriteRule ^(.*)index.php$ /$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

您能帮我解决这个场景并将其写成一小段代码吗?

谢谢


根据答案,我可以使用 .htaccess 文件中的以下代码解决问题:

# To remove .php extension
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\ …
Run Code Online (Sandbox Code Playgroud)

apache .htaccess mod-rewrite redirect

5
推荐指数
1
解决办法
3507
查看次数

从Query String Apache中删除尾部斜杠

我在尝试从apache中的查询字符串末尾删除尾部斜杠时遇到问题.

我现在有以下重写规则,以使URL和查询字符串全部小写:

   RewriteEngine On
   RewriteMap lc int:tolower
   RewriteCond %{REQUEST_URI} ^[^A-Z]*[A-Z].* [OR]
   RewriteCond %{QUERY_STRING} ^[^A-Z]*[A-Z].*
   RewriteRule ^ ${lc:%{REQUEST_URI}}?${lc:%{QUERY_STRING}} [L,R=301]
Run Code Online (Sandbox Code Playgroud)

我试图添加:

RewriteCond %{QUERY_STRING} (.+)/$
RewriteRule ^ %1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

但它破坏了网站.我一直在寻找一种方法来做到这一点,但尚未提出任何解决方案.我试过这篇文章的答案,但他们没有用.

我需要这样做的原因是因为我们的应用程序防火墙在URL中查找"ID",如果之后有任何非字母数字字符,则它会阻止请求.防火墙是在Apache请求到达服务器后实现的.

希望有更多Apache Rewrite规则经验的人可以帮助我.提前致谢.

apache .htaccess mod-rewrite

3
推荐指数
1
解决办法
626
查看次数