如何从URL中删除index.php

时间:2016-09-18 21:37:04

标签: apache drupal drupal-8

我想知道如何从网址中删除index.php,我网站上的每个链接都包含index.php,例如example.com/index.php/contact-us。

使用Drupal 8,我的服务器是Apache,php版本是5.6,我在共享主机上。

在.htaccess文件中,我尝试使用

<?php 
if(isset($_POST['submit'])){
    $to = "heroicostrich@gmail.com"; // this is your Email address
    $from = $_POST['email']; // this is the sender's Email address
    $first_name = $_POST['first_name'];
    $last_name = $_POST['last_name'];
    $subject = "Form submission";
    $subject2 = "Copy of your form submission";
    $message = $first_name . " " . $last_name . " wrote the following:" . "\n\n" . $_POST['message'];
    $message2 = "Here is a copy of your message " . $first_name . "\n\n" . $_POST['message'];

    $headers = "From:" . $from;
    $headers2 = "From:" . $to;
    mail($to,$subject,$message,$headers);
    mail($from,$subject2,$message2,$headers2); // sends a copy of the message to the sender
    echo "Mail Sent. Thank you " . $first_name . ", we will contact you shortly.";
    // You can also use header('Location: thank_you.php'); to redirect to another page.
    }
?>

<!DOCTYPE html>
<head>
<title>Form submission</title>
</head>
<body>

<form action="" method="post">
First Name: <input type="text" name="first_name"><br>
Last Name: <input type="text" name="last_name"><br>
Email: <input type="text" name="email"><br>
Message:<br><textarea rows="5" name="message" cols="30"></textarea><br>
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html> 

删除了index.php,但任何新文章都不会显示主页中的图片(index.php)

然后我尝试使用

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]

同样的事情发生了。

请咨询

2 个答案:

答案 0 :(得分:0)

请查看以下Drupal 8文档:https://www.drupal.org/docs/8/configuring-clean-urls/enable-clean-urls

这可以帮助您启用干净的URL。

此外:您可能需要检查以下问题并针对您的问题发表评论:Enable Clean URLs

扩展:尝试检查图像上的src URL(如果它们包含index.php,如果不包含,则可能是权限配置错误)

编辑:在.htaccess中尝试此代码

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^ index.php [L]
  

旁注:您可能需要考虑切换到PHP7,因为对PHP5.6的主动支持将很快结束。 (Source

答案 1 :(得分:0)

这是我添加到我的apache配置中的内容。

# Sometimes (multiple instances of) index.php/ get(s) inserted in URLs
# Remove them
RewriteCond %{REQUEST_URI} ^/(index.php/)+(.*)
RewriteRule ^.*$ /%2 [R=301,END]

显然,一些“简单XML网站地图”版本引入了这些index.php部分,并将其提交给搜索引擎,现在我得到了那些不干净的url的点击量。

将drupal配置为不使用它们是一回事,但是告诉客户端这些URL不再有效是另一回事。这就是上面方便的地方。它只是删除URL中的所有index.php /部分。

注意:必须将其放置在所有其他重写规则之前!